Updated glsl-optimizer.

This commit is contained in:
bkaradzic 2013-03-17 11:29:03 -07:00
parent 24a1a76329
commit 687be4f31b
70 changed files with 1423 additions and 795 deletions

View file

@ -23,7 +23,7 @@ GLSL Optimizer is licensed according to the terms of the MIT license.
Usage
-----
Visual Studio 2008 (Windows, x86) and Xcode 3.2 (Mac, i386) project files for a static
Visual Studio 2008 (Windows, x86) and Xcode 4.5+ (Mac, i386) project files for a static
library are provided in `src/glsl/msvc/mesaglsl2.vcproj` and `src/glsl/xcode/mesaglsl2`
respectively.

View file

@ -2984,7 +2984,14 @@ ast_declarator_list::hir(exec_list *instructions,
* but otherwise we run into trouble if a function is prototyped, a
* global var is decled, then the function is defined with usage of
* the global var. See glslparsertest's CorrectModule.frag.
* However, do not insert declarations before default precision statements.
*/
exec_node* before_node = instructions->head;
while (before_node && ((ir_instruction*)before_node)->ir_type == ir_type_precision)
before_node = before_node->next;
if (before_node)
before_node->insert_before(var);
else
instructions->push_head(var);
}
@ -3943,7 +3950,22 @@ ast_type_specifier::hir(exec_list *instructions,
return NULL;
}
/* FINISHME: Translate precision statements into IR. */
{
void *ctx = state;
const char* precision_type = NULL;
switch (this->precision) {
case glsl_precision_high: precision_type = "highp"; break;
case glsl_precision_medium: precision_type = "mediump"; break;
case glsl_precision_low: precision_type = "lowp"; break;
case glsl_precision_undefined: precision_type = ""; break;
}
char* precision_statement = ralloc_asprintf(ctx, "precision %s %s", precision_type, this->type_name);
ir_precision_statement *const stmt = new(ctx) ir_precision_statement(precision_statement);
instructions->push_head(stmt);
}
return NULL;
}

View file

@ -14474,6 +14474,25 @@ static const char *functions_for_EXT_shadow_samplers_frag [] = {
builtin_shadow2DEXT,
builtin_shadow2DProjEXT,
};
static const char prototypes_for_EXT_shadow_samplers_vert[] =
"(\n"
"(function shadow2DEXT\n"
" (signature float\n"
" (parameters\n"
" (declare (in) sampler2DShadow sampler)\n"
" (declare (in) vec3 coord))\n"
" ()))\n"
"(function shadow2DProjEXT\n"
" (signature float\n"
" (parameters\n"
" (declare (in) sampler2DShadow sampler)\n"
" (declare (in) vec4 coord))\n"
" ())))"
;
static const char *functions_for_EXT_shadow_samplers_vert [] = {
builtin_shadow2DEXT,
builtin_shadow2DProjEXT,
};
static const char prototypes_for_EXT_texture_array_frag[] =
"(\n"
"(function texture1DArray\n"
@ -14731,7 +14750,7 @@ static const char *functions_for_OES_texture_3D_vert [] = {
builtin_texture3DProj,
builtin_texture3DProjLod,
};
static gl_shader *builtin_profiles[27];
static gl_shader *builtin_profiles[28];
static void *builtin_mem_ctx = NULL;
@ -14921,43 +14940,50 @@ _mesa_glsl_initialize_functions(struct _mesa_glsl_parse_state *state)
Elements(functions_for_EXT_shadow_samplers_frag));
}
if (state->target == fragment_shader && state->EXT_texture_array_enable) {
if (state->target == vertex_shader && state->EXT_shadow_samplers_enable) {
_mesa_read_profile(state, 21,
prototypes_for_EXT_shadow_samplers_vert,
functions_for_EXT_shadow_samplers_vert,
Elements(functions_for_EXT_shadow_samplers_vert));
}
if (state->target == fragment_shader && state->EXT_texture_array_enable) {
_mesa_read_profile(state, 22,
prototypes_for_EXT_texture_array_frag,
functions_for_EXT_texture_array_frag,
Elements(functions_for_EXT_texture_array_frag));
}
if (state->target == vertex_shader && state->EXT_texture_array_enable) {
_mesa_read_profile(state, 22,
_mesa_read_profile(state, 23,
prototypes_for_EXT_texture_array_vert,
functions_for_EXT_texture_array_vert,
Elements(functions_for_EXT_texture_array_vert));
}
if (state->OES_EGL_image_external_enable) {
_mesa_read_profile(state, 23,
_mesa_read_profile(state, 24,
prototypes_for_OES_EGL_image_external_glsl,
functions_for_OES_EGL_image_external_glsl,
Elements(functions_for_OES_EGL_image_external_glsl));
}
if (state->target == fragment_shader && state->OES_standard_derivatives_enable) {
_mesa_read_profile(state, 24,
_mesa_read_profile(state, 25,
prototypes_for_OES_standard_derivatives_frag,
functions_for_OES_standard_derivatives_frag,
Elements(functions_for_OES_standard_derivatives_frag));
}
if (state->target == fragment_shader && state->OES_texture_3D_enable) {
_mesa_read_profile(state, 25,
_mesa_read_profile(state, 26,
prototypes_for_OES_texture_3D_frag,
functions_for_OES_texture_3D_frag,
Elements(functions_for_OES_texture_3D_frag));
}
if (state->target == vertex_shader && state->OES_texture_3D_enable) {
_mesa_read_profile(state, 26,
_mesa_read_profile(state, 27,
prototypes_for_OES_texture_3D_vert,
functions_for_OES_texture_3D_vert,
Elements(functions_for_OES_texture_3D_vert));

View file

@ -813,6 +813,11 @@ generate_100ES_fs_variables(exec_list *instructions,
& builtin_100ES_fs_variables[i], state->es_shader);
}
if (state->EXT_frag_depth_enable) {
const builtin_variable fragDepthEXT = { ir_var_out, FRAG_RESULT_DEPTH, "float", "gl_FragDepthEXT", glsl_precision_high };
add_builtin_variable(instructions, state->symbols, &fragDepthEXT, state->es_shader);
}
generate_100ES_uniforms(instructions, state);
generate_ARB_draw_buffers_variables(instructions, state, false,

View file

@ -0,0 +1,2 @@
float shadow2DEXT (sampler2DShadow sampler, vec3 coord);
float shadow2DProjEXT (sampler2DShadow sampler, vec4 coord);

View file

@ -1,122 +0,0 @@
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "glcpp.h"
#include "main/mtypes.h"
#include "../standalone_scaffolding.h"
extern int yydebug;
void
_mesa_reference_shader(struct gl_context *ctx, struct gl_shader **ptr,
struct gl_shader *sh)
{
(void) ctx;
*ptr = sh;
}
/* Read from fp until EOF and return a string of everything read.
*/
static char *
load_text_fp (void *ctx, FILE *fp)
{
#define CHUNK 4096
char *text = NULL;
size_t text_size = 0;
size_t total_read = 0;
size_t bytes;
while (1) {
if (total_read + CHUNK + 1 > text_size) {
text_size = text_size ? text_size * 2 : CHUNK + 1;
text = reralloc_size (ctx, text, text_size);
if (text == NULL) {
fprintf (stderr, "Out of memory\n");
return NULL;
}
}
bytes = fread (text + total_read, 1, CHUNK, fp);
total_read += bytes;
if (bytes < CHUNK) {
break;
}
}
text[total_read] = '\0';
return text;
}
static char *
load_text_file(void *ctx, const char *filename)
{
char *text;
FILE *fp;
if (filename == NULL || strcmp (filename, "-") == 0)
return load_text_fp (ctx, stdin);
fp = fopen (filename, "r");
if (fp == NULL) {
fprintf (stderr, "Failed to open file %s: %s\n",
filename, strerror (errno));
return NULL;
}
text = load_text_fp (ctx, fp);
fclose(fp);
return text;
}
int
main (int argc, char *argv[])
{
char *filename = NULL;
void *ctx = ralloc(NULL, void*);
char *info_log = ralloc_strdup(ctx, "");
const char *shader;
int ret;
if (argc) {
filename = argv[1];
}
shader = load_text_file (ctx, filename);
if (shader == NULL)
return 1;
ret = glcpp_preprocess(ctx, &shader, &info_log, NULL, API_OPENGL);
printf("%s", shader);
fprintf(stderr, "%s", info_log);
ralloc_free(ctx);
return ret;
}

View file

@ -31,6 +31,7 @@ initialize_mesa_context(struct gl_context *ctx, gl_api api)
{
ctx->Extensions.OES_standard_derivatives = GL_TRUE;
ctx->Extensions.EXT_shadow_samplers = GL_TRUE;
ctx->Extensions.EXT_frag_depth = GL_TRUE;
}
ctx->Const.GLSLVersion = 140;
@ -137,7 +138,7 @@ static inline void debug_print_ir (const char* name, exec_list* ir, _mesa_glsl_p
printf("**** %s:\n", name);
//_mesa_print_ir (ir, state);
char* foobar = _mesa_print_ir_glsl(ir, state, ralloc_strdup(memctx, ""), kPrintGlslFragment);
printf(foobar);
printf("%s\n", foobar);
validate_ir_tree(ir);
#endif
}
@ -363,9 +364,11 @@ glslopt_shader* glslopt_optimize (glslopt_ctx* ctx, glslopt_shader_type type, co
memcpy(shader->shader->builtins_to_link, state->builtins_to_link, sizeof(shader->shader->builtins_to_link[0]) * state->num_builtins_to_link);
shader->shader->num_builtins_to_link = state->num_builtins_to_link;
struct gl_shader* linked_shader = 0;
if (!state->error && !ir->is_empty())
{
struct gl_shader* linked_shader = link_intrastage_shaders(ctx->mem_ctx,
linked_shader = link_intrastage_shaders(ctx->mem_ctx,
&ctx->mesa_ctx,
shader->whole_program,
shader->whole_program->Shaders,
@ -401,6 +404,9 @@ glslopt_shader* glslopt_optimize (glslopt_ctx* ctx, glslopt_shader_type type, co
ralloc_free (ir);
ralloc_free (state);
if (linked_shader)
ralloc_free(linked_shader);
return shader;
}

View file

@ -281,7 +281,8 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
EXT(ARB_shader_bit_encoding, true, true, true, true, false, ARB_shader_bit_encoding),
EXT(ARB_uniform_buffer_object, true, false, true, true, false, ARB_uniform_buffer_object),
EXT(OES_standard_derivatives, false, false, true, false, true, OES_standard_derivatives),
EXT(EXT_shadow_samplers, false, false, true, false, true, EXT_shadow_samplers),
EXT(EXT_shadow_samplers, true, false, true, false, true, EXT_shadow_samplers),
EXT(EXT_frag_depth, true, false, true, false, true, EXT_frag_depth),
};
#undef EXT

View file

@ -191,6 +191,8 @@ struct _mesa_glsl_parse_state {
bool EXT_shader_texture_lod_warn;
bool EXT_shadow_samplers_enable;
bool EXT_shadow_samplers_warn;
bool EXT_frag_depth_enable;
bool EXT_frag_depth_warn;
bool ARB_shader_stencil_export_enable;
bool ARB_shader_stencil_export_warn;
bool AMD_conservative_depth_enable;

View file

@ -80,6 +80,7 @@ enum ir_node_type {
ir_type_return,
ir_type_swizzle,
ir_type_texture,
ir_type_precision,
ir_type_max /**< maximum ir_type enum number, for validation */
};
@ -1813,6 +1814,32 @@ private:
ir_constant(void);
};
class ir_precision_statement : public ir_instruction {
public:
ir_precision_statement(const char *statement_to_store)
{
ir_type = ir_type_precision;
precision_statement = statement_to_store;
}
virtual ir_precision_statement *clone(void *mem_ctx, struct hash_table *) const;
virtual void accept(ir_visitor *v)
{
v->visit(this);
}
virtual ir_visitor_status accept(ir_hierarchical_visitor *);
/**
* Precision statement
*/
const char *precision_statement;
};
/*@}*/
/**

View file

@ -155,7 +155,14 @@ ir_loop::clone(void *mem_ctx, struct hash_table *ht) const
new_loop->to = this->to->clone(mem_ctx, ht);
if (this->increment)
new_loop->increment = this->increment->clone(mem_ctx, ht);
new_loop->counter = counter;
if (ht) {
new_loop->counter = (ir_variable *)hash_table_find(ht, this->counter);
if (!new_loop->counter)
new_loop->counter = this->counter;
} else {
new_loop->counter = this->counter;
}
foreach_iter(exec_list_iterator, iter, this->body_instructions) {
ir_instruction *ir = (ir_instruction *)iter.get();
@ -388,6 +395,14 @@ ir_constant::clone(void *mem_ctx, struct hash_table *ht) const
}
ir_precision_statement *
ir_precision_statement::clone(void *mem_ctx, struct hash_table *ht) const
{
return new(mem_ctx) ir_precision_statement(this->precision_statement);
}
class fixup_ir_call_visitor : public ir_hierarchical_visitor {
public:
fixup_ir_call_visitor(struct hash_table *ht)

View file

@ -68,6 +68,15 @@ ir_hierarchical_visitor::visit(ir_loop_jump *ir)
return visit_continue;
}
ir_visitor_status
ir_hierarchical_visitor::visit(ir_precision_statement *ir)
{
if (this->callback != NULL)
this->callback(ir, this->data);
return visit_continue;
}
ir_visitor_status
ir_hierarchical_visitor::visit(ir_dereference_variable *ir)
{

View file

@ -86,6 +86,7 @@ public:
virtual ir_visitor_status visit(class ir_variable *);
virtual ir_visitor_status visit(class ir_constant *);
virtual ir_visitor_status visit(class ir_loop_jump *);
virtual ir_visitor_status visit(class ir_precision_statement *);
/**
* ir_dereference_variable isn't technically a leaf, but it is treated as a

View file

@ -397,3 +397,9 @@ ir_if::accept(ir_hierarchical_visitor *v)
return v->visit_leave(this);
}
ir_visitor_status
ir_precision_statement::accept(ir_hierarchical_visitor *v)
{
return v->visit(this);
}

View file

@ -113,6 +113,7 @@ public:
virtual void visit(ir_if *);
virtual void visit(ir_loop *);
virtual void visit(ir_loop_jump *);
virtual void visit(ir_precision_statement *);
int indentation;
char* buffer;
@ -139,6 +140,8 @@ _mesa_print_ir_glsl(exec_list *instructions,
ralloc_strcat (&buffer, "#extension GL_OES_standard_derivatives : enable\n");
if (state->EXT_shadow_samplers_enable)
ralloc_strcat (&buffer, "#extension GL_EXT_shadow_samplers : enable\n");
if (state->EXT_frag_depth_enable)
ralloc_strcat (&buffer, "#extension GL_EXT_frag_depth : enable\n");
}
if (state) {
ir_struct_usage_visitor v;
@ -173,7 +176,8 @@ _mesa_print_ir_glsl(exec_list *instructions,
ir_instruction *ir = (ir_instruction *)iter.get();
if (ir->ir_type == ir_type_variable) {
ir_variable *var = static_cast<ir_variable*>(ir);
if (strstr(var->name, "gl_") == var->name)
if ((strstr(var->name, "gl_") == var->name)
&& !var->invariant)
continue;
}
@ -219,9 +223,23 @@ void ir_print_glsl_visitor::print_precision (ir_instruction* ir, const glsl_type
{
if (!this->use_precision)
return;
if (type && !type->is_float() && (!type->is_array() || !type->element_type()->is_float()))
if (type &&
!type->is_float() &&
!type->is_sampler() &&
(!type->is_array() || !type->element_type()->is_float())
)
{
return;
}
glsl_precision prec = precision_from_ir(ir);
// skip precision for samplers that end up being lowp (default anyway) or undefined
if (type && type->is_sampler())
{
if (prec == glsl_precision_low || prec == glsl_precision_undefined)
return;
}
if (prec == glsl_precision_high || prec == glsl_precision_undefined)
{
if (ir->ir_type == ir_type_function_signature)
@ -288,6 +306,13 @@ void ir_print_glsl_visitor::visit(ir_variable *ir)
}
}
// keep invariant declaration for builtin variables
if (strstr(ir->name, "gl_") == ir->name) {
ralloc_asprintf_append (&buffer, "%s", inv);
print_var_name (ir);
return;
}
ralloc_asprintf_append (&buffer, "%s%s%s%s",
cent, inv, interp[ir->interpolation], mode[decormode][ir->mode]);
print_precision (ir, ir->type);
@ -583,19 +608,30 @@ void ir_print_glsl_visitor::visit(ir_texture *ir)
const bool is_proj = (uv_dim > sampler_uv_dim);
// texture function name
//ACS: shadow lookups and lookups with dimensionality included in the name were deprecated in 130
if(state->language_version<130)
{
ralloc_asprintf_append (&buffer, "%s", is_shadow ? "shadow" : "texture");
ralloc_asprintf_append (&buffer, "%s", tex_sampler_dim_name[sampler_dim]);
}
else
{
ralloc_asprintf_append (&buffer, "texture");
}
if (is_proj)
ralloc_asprintf_append (&buffer, "Proj");
if (ir->op == ir_txl)
ralloc_asprintf_append (&buffer, "Lod");
if (is_shadow)
if (state->es_shader)
{
if ( (is_shadow && state->EXT_shadow_samplers_enable) ||
(ir->op == ir_txl && state->EXT_shader_texture_lod_enable) )
{
if (state->EXT_shadow_samplers_enable && state->es_shader)
ralloc_asprintf_append (&buffer, "EXT");
}
}
ralloc_asprintf_append (&buffer, " (");
@ -1073,3 +1109,9 @@ ir_print_glsl_visitor::visit(ir_loop_jump *ir)
{
ralloc_asprintf_append (&buffer, "%s", ir->is_break() ? "break" : "continue");
}
void
ir_print_glsl_visitor::visit(ir_precision_statement *ir)
{
ralloc_asprintf_append (&buffer, "%s", ir->precision_statement);
}

View file

@ -514,3 +514,9 @@ ir_print_visitor::visit(ir_loop_jump *ir)
{
printf("%s", ir->is_break() ? "break" : "continue");
}
void
ir_print_visitor::visit(ir_precision_statement *ir)
{
printf("%s", ir->precision_statement);
}

View file

@ -72,6 +72,7 @@ public:
virtual void visit(ir_if *);
virtual void visit(ir_loop *);
virtual void visit(ir_loop_jump *);
virtual void visit(ir_precision_statement *);
/*@}*/
private:

View file

@ -1,213 +0,0 @@
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/**
* \file ir_set_program_inouts.cpp
*
* Sets the InputsRead and OutputsWritten of Mesa programs.
*
* Additionally, for fragment shaders, sets the InterpQualifier array, the
* IsCentroid bitfield, and the UsesDFdy flag.
*
* Mesa programs (gl_program, not gl_shader_program) have a set of
* flags indicating which varyings are read and written. Computing
* which are actually read from some sort of backend code can be
* tricky when variable array indexing involved. So this pass
* provides support for setting InputsRead and OutputsWritten right
* from the GLSL IR.
*/
#include "main/core.h" /* for struct gl_program */
#include "program/hash_table.h"
#include "ir.h"
#include "ir_visitor.h"
#include "glsl_types.h"
class ir_set_program_inouts_visitor : public ir_hierarchical_visitor {
public:
ir_set_program_inouts_visitor(struct gl_program *prog,
bool is_fragment_shader)
{
this->prog = prog;
this->is_fragment_shader = is_fragment_shader;
this->ht = hash_table_ctor(0,
hash_table_pointer_hash,
hash_table_pointer_compare);
}
~ir_set_program_inouts_visitor()
{
hash_table_dtor(this->ht);
}
virtual ir_visitor_status visit_enter(ir_dereference_array *);
virtual ir_visitor_status visit_enter(ir_function_signature *);
virtual ir_visitor_status visit_enter(ir_expression *);
virtual ir_visitor_status visit_enter(ir_discard *);
virtual ir_visitor_status visit(ir_dereference_variable *);
virtual ir_visitor_status visit(ir_variable *);
struct gl_program *prog;
struct hash_table *ht;
bool is_fragment_shader;
};
static void
mark(struct gl_program *prog, ir_variable *var, int offset, int len,
bool is_fragment_shader)
{
/* As of GLSL 1.20, varyings can only be floats, floating-point
* vectors or matrices, or arrays of them. For Mesa programs using
* InputsRead/OutputsWritten, everything but matrices uses one
* slot, while matrices use a slot per column. Presumably
* something doing a more clever packing would use something other
* than InputsRead/OutputsWritten.
*/
for (int i = 0; i < len; i++) {
GLbitfield64 bitfield = BITFIELD64_BIT(var->location + var->index + offset + i);
if (var->mode == ir_var_in) {
prog->InputsRead |= bitfield;
if (is_fragment_shader) {
gl_fragment_program *fprog = (gl_fragment_program *) prog;
fprog->InterpQualifier[var->location + var->index + offset + i] =
(glsl_interp_qualifier) var->interpolation;
if (var->centroid)
fprog->IsCentroid |= bitfield;
}
} else if (var->mode == ir_var_system_value) {
prog->SystemValuesRead |= bitfield;
} else {
prog->OutputsWritten |= bitfield;
}
}
}
/* Default handler: Mark all the locations in the variable as used. */
ir_visitor_status
ir_set_program_inouts_visitor::visit(ir_dereference_variable *ir)
{
if (hash_table_find(this->ht, ir->var) == NULL)
return visit_continue;
if (ir->type->is_array()) {
mark(this->prog, ir->var, 0,
ir->type->length * ir->type->fields.array->matrix_columns,
this->is_fragment_shader);
} else {
mark(this->prog, ir->var, 0, ir->type->matrix_columns,
this->is_fragment_shader);
}
return visit_continue;
}
ir_visitor_status
ir_set_program_inouts_visitor::visit_enter(ir_dereference_array *ir)
{
ir_dereference_variable *deref_var;
ir_constant *index = ir->array_index->as_constant();
deref_var = ir->array->as_dereference_variable();
ir_variable *var = NULL;
/* Check that we're dereferencing a shader in or out */
if (deref_var)
var = (ir_variable *)hash_table_find(this->ht, deref_var->var);
if (index && var) {
int width = 1;
if (deref_var->type->is_array() &&
deref_var->type->fields.array->is_matrix()) {
width = deref_var->type->fields.array->matrix_columns;
}
mark(this->prog, var, index->value.i[0] * width, width,
this->is_fragment_shader);
return visit_continue_with_parent;
}
return visit_continue;
}
ir_visitor_status
ir_set_program_inouts_visitor::visit(ir_variable *ir)
{
if (ir->mode == ir_var_in ||
ir->mode == ir_var_out ||
ir->mode == ir_var_system_value) {
hash_table_insert(this->ht, ir, ir);
}
return visit_continue;
}
ir_visitor_status
ir_set_program_inouts_visitor::visit_enter(ir_function_signature *ir)
{
/* We don't want to descend into the function parameters and
* consider them as shader inputs or outputs.
*/
visit_list_elements(this, &ir->body);
return visit_continue_with_parent;
}
ir_visitor_status
ir_set_program_inouts_visitor::visit_enter(ir_expression *ir)
{
if (is_fragment_shader && ir->operation == ir_unop_dFdy) {
gl_fragment_program *fprog = (gl_fragment_program *) prog;
fprog->UsesDFdy = true;
}
return visit_continue;
}
ir_visitor_status
ir_set_program_inouts_visitor::visit_enter(ir_discard *)
{
/* discards are only allowed in fragment shaders. */
assert(is_fragment_shader);
gl_fragment_program *fprog = (gl_fragment_program *) prog;
fprog->UsesKill = true;
return visit_continue;
}
void
do_set_program_inouts(exec_list *instructions, struct gl_program *prog,
bool is_fragment_shader)
{
ir_set_program_inouts_visitor v(prog, is_fragment_shader);
prog->InputsRead = 0;
prog->OutputsWritten = 0;
prog->SystemValuesRead = 0;
if (is_fragment_shader) {
gl_fragment_program *fprog = (gl_fragment_program *) prog;
memset(fprog->InterpQualifier, 0, sizeof(fprog->InterpQualifier));
fprog->IsCentroid = 0;
fprog->UsesDFdy = false;
fprog->UsesKill = false;
}
visit_list_elements(&v, instructions);
}

View file

@ -62,6 +62,7 @@ public:
virtual void visit(class ir_if *) = 0;
virtual void visit(class ir_loop *) = 0;
virtual void visit(class ir_loop_jump *) = 0;
virtual void visit(class ir_precision_statement *) = 0;
/*@}*/
};

View file

@ -876,6 +876,9 @@ move_non_declarations(exec_list *instructions, exec_node *last,
if (inst->as_function())
continue;
if (inst->ir_type == ir_type_precision)
continue;
ir_variable *var = inst->as_variable();
if ((var != NULL) && (var->mode != ir_var_temporary))
continue;
@ -1071,8 +1074,8 @@ link_intrastage_shaders(void *mem_ctx,
*/
ir_function_signature *const main_sig = get_main_function_signature(linked);
/* Move any instructions other than variable declarations or function
* declarations into main.
/* Move any instructions other than variable declarations, function
* declarations or precision statements into main.
*/
exec_node *insertion_point =
move_non_declarations(linked->ir, (exec_node *) &main_sig->body, false,

View file

@ -441,6 +441,11 @@ struct ir_lower_jumps_visitor : public ir_control_flow_visitor {
(void) ir;
}
virtual void visit(class ir_precision_statement * ir)
{
/* Nothing needs to be done. */
}
enum jump_strength get_jump_strength(ir_instruction* ir)
{
if(!ir)
@ -1002,10 +1007,12 @@ do_lower_jumps(exec_list *instructions, bool pull_out_jumps, bool lower_sub_retu
v.lower_sub_return = lower_sub_return;
v.lower_main_return = lower_main_return;
bool progress_ever = false;
do {
v.progress = false;
visit_exec_list(instructions, &v);
progress_ever = v.progress || progress_ever;
} while (v.progress);
return v.progress;
return progress_ever;
}

View file

@ -11,17 +11,27 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B475A403-9D9B-410D-8A93-BA49FC4DD811}.Debug|Win32.ActiveCfg = Debug|Win32
{B475A403-9D9B-410D-8A93-BA49FC4DD811}.Debug|Win32.Build.0 = Debug|Win32
{B475A403-9D9B-410D-8A93-BA49FC4DD811}.Debug|x64.ActiveCfg = Debug|x64
{B475A403-9D9B-410D-8A93-BA49FC4DD811}.Debug|x64.Build.0 = Debug|x64
{B475A403-9D9B-410D-8A93-BA49FC4DD811}.Release|Win32.ActiveCfg = Release|Win32
{B475A403-9D9B-410D-8A93-BA49FC4DD811}.Release|Win32.Build.0 = Release|Win32
{B475A403-9D9B-410D-8A93-BA49FC4DD811}.Release|x64.ActiveCfg = Release|x64
{B475A403-9D9B-410D-8A93-BA49FC4DD811}.Release|x64.Build.0 = Release|x64
{BB382242-6EBB-445F-989C-B9BA61D17965}.Debug|Win32.ActiveCfg = Debug|Win32
{BB382242-6EBB-445F-989C-B9BA61D17965}.Debug|Win32.Build.0 = Debug|Win32
{BB382242-6EBB-445F-989C-B9BA61D17965}.Debug|x64.ActiveCfg = Debug|x64
{BB382242-6EBB-445F-989C-B9BA61D17965}.Debug|x64.Build.0 = Debug|x64
{BB382242-6EBB-445F-989C-B9BA61D17965}.Release|Win32.ActiveCfg = Release|Win32
{BB382242-6EBB-445F-989C-B9BA61D17965}.Release|Win32.Build.0 = Release|Win32
{BB382242-6EBB-445F-989C-B9BA61D17965}.Release|x64.ActiveCfg = Release|x64
{BB382242-6EBB-445F-989C-B9BA61D17965}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View file

@ -12,14 +12,17 @@
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="build/$(ProjectName)/$(ConfigurationName)"
IntermediateDirectory="build/$(ProjectName)/$(ConfigurationName)"
OutputDirectory="build/$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="build/$(ProjectName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
>
@ -81,10 +84,76 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="build/$(ProjectName)/$(PlatformName)/$(ConfigurationName)"
IntermediateDirectory="build/$(ProjectName)/$(PlatformName)/$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../talloc;../../../include;../../mesa;../../mapi;../../../include/c99"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;NOMINMAX;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;snprintf=_snprintf"
MinimalRebuild="false"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
DisableSpecificWarnings="4291;4996;4800;4099;4244;4018"
ForcedIncludeFiles=""
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)-x64.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="build/$(ProjectName)/$(ConfigurationName)"
IntermediateDirectory="build/$(ProjectName)/$(ConfigurationName)"
OutputDirectory="build/$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="build/$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="0"
@ -147,6 +216,73 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="build/$(ProjectName)/$(PlatformName)/$(ConfigurationName)"
IntermediateDirectory="build/$(ProjectName)/$(PlatformName)/$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
AdditionalIncludeDirectories="../../talloc;../../../include;../../mesa;../../mapi;../../../include/c99"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;NOMINMAX;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;snprintf=_snprintf"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="1"
DisableSpecificWarnings="4291;4996;4800;4099;4244;4018"
ForcedIncludeFiles=""
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)-x64.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
@ -208,6 +344,14 @@
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
@ -216,6 +360,14 @@
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\glsl_optimizer.cpp"
@ -244,6 +396,14 @@
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
@ -252,6 +412,14 @@
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\glsl_parser_extras.cpp"
@ -504,6 +672,14 @@
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
@ -512,6 +688,14 @@
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\opt_algebraic.cpp"
@ -635,6 +819,14 @@
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
@ -643,6 +835,14 @@
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\glcpp\glcpp-parse.c"
@ -663,6 +863,14 @@
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
@ -671,6 +879,14 @@
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\glcpp\glcpp.c"
@ -683,6 +899,14 @@
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
@ -691,6 +915,14 @@
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\glcpp\glcpp.h"

View file

@ -53,6 +53,7 @@ public:
virtual ir_visitor_status visit(ir_variable *);
virtual ir_visitor_status visit_enter(ir_assignment *);
virtual ir_visitor_status visit_enter(ir_call *);
virtual ir_visitor_status visit_enter(ir_function_signature *);
exec_list list;
};
@ -162,6 +163,23 @@ ir_constant_variable_visitor::visit_enter(ir_call *ir)
return visit_continue;
}
ir_visitor_status
ir_constant_variable_visitor::visit_enter(ir_function_signature *ir)
{
/* Mark any in parameters as assigned to */
foreach_iter(exec_list_iterator, iter, ir->parameters) {
ir_variable *var = (ir_variable *)iter.get();
if (var->mode == ir_var_in || var->mode == ir_var_const_in || var->mode == ir_var_inout) {
struct assignment_entry *entry;
entry = get_assignment_entry(var, &this->list);
entry->assignment_count++;
}
}
visit_list_elements(this, &ir->body);
return visit_continue_with_parent;
}
/**
* Does a copy propagation pass on the code present in the instruction stream.
*/

View file

@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
@ -258,7 +258,6 @@
2B6A99EE1223B1670059FBED /* glcpp-parse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "glcpp-parse.c"; path = "../glcpp/glcpp-parse.c"; sourceTree = SOURCE_ROOT; };
2B6A99EF1223B1670059FBED /* glcpp-parse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "glcpp-parse.h"; path = "../glcpp/glcpp-parse.h"; sourceTree = SOURCE_ROOT; };
2B6A99F01223B1670059FBED /* glcpp-parse.y */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.yacc; name = "glcpp-parse.y"; path = "../glcpp/glcpp-parse.y"; sourceTree = SOURCE_ROOT; };
2B6A99F11223B1670059FBED /* glcpp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glcpp.c; path = ../glcpp/glcpp.c; sourceTree = SOURCE_ROOT; };
2B6A99F21223B1670059FBED /* glcpp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glcpp.h; path = ../glcpp/glcpp.h; sourceTree = SOURCE_ROOT; };
2B6A99F31223B1670059FBED /* pp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pp.c; path = ../glcpp/pp.c; sourceTree = SOURCE_ROOT; };
2B6AC7B5161EC99C0094FD86 /* prog_instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = prog_instruction.h; path = ../../mesa/program/prog_instruction.h; sourceTree = SOURCE_ROOT; };
@ -422,7 +421,6 @@
2B6A99EE1223B1670059FBED /* glcpp-parse.c */,
2B6A99EF1223B1670059FBED /* glcpp-parse.h */,
2B6A99F01223B1670059FBED /* glcpp-parse.y */,
2B6A99F11223B1670059FBED /* glcpp.c */,
2B6A99F21223B1670059FBED /* glcpp.h */,
2B6A99F31223B1670059FBED /* pp.c */,
);
@ -663,8 +661,11 @@
/* Begin PBXProject section */
08FB7793FE84155DC02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0460;
};
buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "mesaglsl2" */;
compatibilityVersion = "Xcode 3.1";
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
@ -879,9 +880,9 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
INSTALL_PATH = /usr/local/lib;
@ -893,6 +894,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_MODEL_TUNING = G5;
INSTALL_PATH = /usr/local/lib;
@ -906,7 +908,7 @@
ARCHS = i386;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_VERSION = 4.0;
GCC_VERSION = "";
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
@ -915,9 +917,9 @@
../../../include,
../../mesa,
);
MACOSX_DEPLOYMENT_TARGET = 10.6;
ONLY_ACTIVE_ARCH = YES;
PREBINDING = NO;
SDKROOT = macosx10.4;
SDKROOT = macosx;
};
name = Debug;
};
@ -926,7 +928,7 @@
buildSettings = {
ARCHS = i386;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_VERSION = 4.0;
GCC_VERSION = "";
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
@ -934,8 +936,8 @@
../../../include,
../../mesa,
);
PREBINDING = NO;
SDKROOT = macosx10.4;
MACOSX_DEPLOYMENT_TARGET = 10.6;
SDKROOT = macosx;
};
name = Release;
};
@ -946,11 +948,9 @@
CONFIGURATION_BUILD_DIR = ..;
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
INSTALL_PATH = /usr/local/bin;
PREBINDING = NO;
PRODUCT_NAME = builtin_compiler;
};
name = Debug;
@ -962,10 +962,8 @@
CONFIGURATION_BUILD_DIR = ..;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_ENABLE_FIX_AND_CONTINUE = NO;
GCC_MODEL_TUNING = G5;
INSTALL_PATH = /usr/local/bin;
PREBINDING = NO;
PRODUCT_NAME = builtin_compiler;
ZERO_LINK = NO;
};

View file

@ -1145,6 +1145,7 @@ struct gl_extensions
GLboolean EXT_vertex_array_bgra;
GLboolean OES_standard_derivatives;
GLboolean EXT_shadow_samplers;
GLboolean EXT_frag_depth;
/* vendor extensions */
GLboolean AMD_seamless_cubemap_per_texture;
GLboolean APPLE_packed_pixels;

View file

@ -0,0 +1,19 @@
// Used to expose bugs in constant variable optimization,
// when variables were deemed constant not taking into
// account branches or previous dereferences of them.
uniform float mode;
float func (float c) {
if (mode == 2.0)
return c;
if (mode == 3.0)
discard;
if (mode == 10.0)
c = 0.1;
return c;
}
void main() {
vec4 c = gl_FragCoord;
c.x = func(c.x);
gl_FragColor = c;
}

View file

@ -0,0 +1,35 @@
uniform float mode;
float func (
in float c_1
)
{
if ((mode == 2.0)) {
return c_1;
};
if ((mode == 3.0)) {
discard;
};
if ((mode == 10.0)) {
float tmpvar_2;
tmpvar_2 = 0.1;
c_1 = tmpvar_2;
};
return c_1;
}
void main ()
{
vec4 c_3;
vec4 tmpvar_4;
tmpvar_4 = gl_FragCoord;
c_3 = tmpvar_4;
float tmpvar_5;
tmpvar_5 = func (c_3.x);
float tmpvar_6;
tmpvar_6 = tmpvar_5;
c_3.x = tmpvar_6;
vec4 tmpvar_7;
tmpvar_7 = c_3;
gl_FragColor = tmpvar_7;
}

View file

@ -0,0 +1,23 @@
uniform float mode;
void main ()
{
vec4 c_1;
c_1 = gl_FragCoord;
float c_2;
c_2 = gl_FragCoord.x;
float tmpvar_3;
if ((mode == 2.0)) {
tmpvar_3 = c_2;
} else {
if ((mode == 3.0)) {
discard;
};
if ((mode == 10.0)) {
c_2 = 0.1;
};
tmpvar_3 = c_2;
};
c_1.x = tmpvar_3;
gl_FragColor = c_1;
}

View file

@ -0,0 +1,11 @@
void xlat_main( out vec4 ocol, out float oz ) {
ocol = vec4( 0.5);
oz = 0.9;
}
void main() {
vec4 xlt_ocol;
float xlt_oz;
xlat_main( xlt_ocol, xlt_oz);
gl_FragData[0] = vec4(xlt_ocol);
gl_FragDepth = float(xlt_oz);
}

View file

@ -0,0 +1,12 @@
#extension GL_EXT_frag_depth : require
void xlat_main( out lowp vec4 ocol, out mediump float oz ) {
ocol = vec4( 0.5);
oz = 0.9;
}
void main() {
lowp vec4 xlt_ocol;
mediump float xlt_oz;
xlat_main( xlt_ocol, xlt_oz);
gl_FragData[0] = vec4(xlt_ocol);
gl_FragDepthEXT = float(xlt_oz);
}

View file

@ -0,0 +1,28 @@
void xlat_main (
out vec4 ocol_1,
out float oz_2
)
{
vec4 tmpvar_3;
tmpvar_3 = vec4(0.5, 0.5, 0.5, 0.5);
ocol_1 = tmpvar_3;
float tmpvar_4;
tmpvar_4 = 0.9;
oz_2 = tmpvar_4;
}
void main ()
{
float xlt_oz_5;
vec4 xlt_ocol_6;
xlat_main (xlt_ocol_6, xlt_oz_5);
vec4 tmpvar_7;
tmpvar_7 = xlt_ocol_6.xyzw;
vec4 tmpvar_8;
tmpvar_8 = tmpvar_7;
gl_FragData[0] = tmpvar_8;
float tmpvar_9;
tmpvar_9 = xlt_oz_5;
gl_FragDepth = tmpvar_9;
}

View file

@ -0,0 +1,29 @@
#extension GL_EXT_frag_depth : enable
void xlat_main (
out lowp vec4 ocol_1,
out mediump float oz_2
)
{
vec4 tmpvar_3;
tmpvar_3 = vec4(0.5, 0.5, 0.5, 0.5);
ocol_1 = tmpvar_3;
float tmpvar_4;
tmpvar_4 = 0.9;
oz_2 = tmpvar_4;
}
void main ()
{
mediump float xlt_oz_5;
lowp vec4 xlt_ocol_6;
xlat_main (xlt_ocol_6, xlt_oz_5);
lowp vec4 tmpvar_7;
tmpvar_7 = xlt_ocol_6.xyzw;
lowp vec4 tmpvar_8;
tmpvar_8 = tmpvar_7;
gl_FragData[0] = tmpvar_8;
mediump float tmpvar_9;
tmpvar_9 = xlt_oz_5;
gl_FragDepthEXT = tmpvar_9;
}

View file

@ -0,0 +1,6 @@
void main ()
{
gl_FragData[0] = vec4(0.5, 0.5, 0.5, 0.5);
gl_FragDepth = 0.9;
}

View file

@ -0,0 +1,7 @@
#extension GL_EXT_frag_depth : enable
void main ()
{
gl_FragData[0] = vec4(0.5, 0.5, 0.5, 0.5);
gl_FragDepthEXT = 0.9;
}

View file

@ -0,0 +1,7 @@
void main() {
int i = 0;
float f = 0.0;
for (; i < 32; (++i))
f += gl_FragCoord.x * float(i);
gl_FragColor = vec4(f);
}

View file

@ -0,0 +1,28 @@
void main ()
{
mediump float f_1;
int i_2;
int tmpvar_3;
tmpvar_3 = 0;
i_2 = tmpvar_3;
float tmpvar_4;
tmpvar_4 = 0.0;
f_1 = tmpvar_4;
while (true) {
if (!((i_2 < 32))) {
break;
};
mediump float tmpvar_5;
tmpvar_5 = (f_1 + (gl_FragCoord.x * float(i_2)));
f_1 = tmpvar_5;
int tmpvar_6;
tmpvar_6 = (i_2 + 1);
i_2 = tmpvar_6;
};
mediump vec4 tmpvar_7;
tmpvar_7 = vec4(f_1);
mediump vec4 tmpvar_8;
tmpvar_8 = tmpvar_7;
gl_FragColor = tmpvar_8;
}

View file

@ -0,0 +1,13 @@
void main ()
{
mediump float f_1;
int i_2;
i_2 = 0;
f_1 = 0.0;
for (int i_2 = 0; i_2 < 32; ) {
f_1 = (f_1 + (gl_FragCoord.x * float(i_2)));
i_2 = (i_2 + 1);
};
gl_FragColor = vec4(f_1);
}

View file

@ -0,0 +1,17 @@
precision highp float;
precision lowp int;
uniform float fh1;
uniform highp float fh2;
uniform mediump float fm;
uniform int il1;
uniform lowp int il2;
uniform mediump int im;
void main() {
lowp float f = fh1 + fh2 + fm;
highp int i = il1 + il2 + im;
gl_FragColor = vec4(f, i, 0.0, 0.0);
}

View file

@ -0,0 +1,27 @@
precision lowp int;
precision highp float;
uniform int im;
uniform int il2;
uniform int il1;
uniform mediump float fm;
uniform highp float fh2;
uniform float fh1;
void main ()
{
int i_1;
lowp float f_2;
highp float tmpvar_3;
tmpvar_3 = ((fh1 + fh2) + fm);
f_2 = tmpvar_3;
int tmpvar_4;
tmpvar_4 = ((il1 + il2) + im);
i_1 = tmpvar_4;
highp vec4 tmpvar_5;
tmpvar_5.zw = vec2(0.0, 0.0);
tmpvar_5.x = f_2;
tmpvar_5.y = float(i_1);
highp vec4 tmpvar_6;
tmpvar_6 = tmpvar_5;
gl_FragColor = tmpvar_6;
}

View file

@ -0,0 +1,25 @@
precision lowp int;
precision highp float;
uniform int im;
uniform int il2;
uniform int il1;
uniform mediump float fm;
uniform highp float fh2;
uniform float fh1;
void main ()
{
int i_1;
lowp float f_2;
highp float tmpvar_3;
tmpvar_3 = ((fh1 + fh2) + fm);
f_2 = tmpvar_3;
int tmpvar_4;
tmpvar_4 = ((il1 + il2) + im);
i_1 = tmpvar_4;
highp vec4 tmpvar_5;
tmpvar_5.zw = vec2(0.0, 0.0);
tmpvar_5.x = f_2;
tmpvar_5.y = float(i_1);
gl_FragColor = tmpvar_5;
}

View file

@ -1,6 +1,6 @@
varying mediump vec2 var_mediump;
varying lowp vec2 var_lowp;
uniform sampler2D tex_highp;
uniform highp sampler2D tex_highp;
uniform sampler2D tex_lowp;
uniform sampler2D tex_def;
void main ()

View file

@ -1,6 +1,6 @@
varying mediump vec2 var_mediump;
varying lowp vec2 var_lowp;
uniform sampler2D tex_highp;
uniform highp sampler2D tex_highp;
uniform sampler2D tex_lowp;
uniform sampler2D tex_def;
void main ()

View file

@ -0,0 +1,23 @@
uniform sampler2D texlow;
uniform mediump sampler2D texmed;
uniform highp sampler2D texhigh;
uniform samplerCube cubelow;
uniform mediump samplerCube cubemed;
uniform highp samplerCube cubehigh;
mediump vec4 xlat_main(in highp vec4 uv) {
mediump vec4 c;
c = texture2D(texlow, uv.xy);
c += texture2D(texmed, uv.xy);
c += texture2D(texhigh, uv.xy);
c += textureCube(cubelow, uv.xyz);
c += textureCube(cubemed, uv.xyz);
c += textureCube(cubehigh, uv.xyz);
return c;
}
varying highp vec4 varUV;
void main() {
mediump vec4 r;
r = xlat_main(varUV);
gl_FragData[0] = r;
}

View file

@ -0,0 +1,58 @@
varying highp vec4 varUV;
uniform highp samplerCube cubehigh;
uniform mediump samplerCube cubemed;
uniform samplerCube cubelow;
uniform highp sampler2D texhigh;
uniform mediump sampler2D texmed;
uniform sampler2D texlow;
mediump vec4 xlat_main (
in highp vec4 uv_1
)
{
mediump vec4 c_2;
lowp vec4 tmpvar_3;
tmpvar_3 = texture2D (texlow, uv_1.xy);
lowp vec4 tmpvar_4;
tmpvar_4 = tmpvar_3;
c_2 = tmpvar_4;
mediump vec4 tmpvar_5;
tmpvar_5 = texture2D (texmed, uv_1.xy);
mediump vec4 tmpvar_6;
tmpvar_6 = (c_2 + tmpvar_5);
c_2 = tmpvar_6;
highp vec4 tmpvar_7;
tmpvar_7 = texture2D (texhigh, uv_1.xy);
highp vec4 tmpvar_8;
tmpvar_8 = (c_2 + tmpvar_7);
c_2 = tmpvar_8;
lowp vec4 tmpvar_9;
tmpvar_9 = textureCube (cubelow, uv_1.xyz);
mediump vec4 tmpvar_10;
tmpvar_10 = (c_2 + tmpvar_9);
c_2 = tmpvar_10;
mediump vec4 tmpvar_11;
tmpvar_11 = textureCube (cubemed, uv_1.xyz);
mediump vec4 tmpvar_12;
tmpvar_12 = (c_2 + tmpvar_11);
c_2 = tmpvar_12;
highp vec4 tmpvar_13;
tmpvar_13 = textureCube (cubehigh, uv_1.xyz);
highp vec4 tmpvar_14;
tmpvar_14 = (c_2 + tmpvar_13);
c_2 = tmpvar_14;
return c_2;
}
void main ()
{
mediump vec4 r_15;
mediump vec4 tmpvar_16;
tmpvar_16 = xlat_main (varUV);
mediump vec4 tmpvar_17;
tmpvar_17 = tmpvar_16;
r_15 = tmpvar_17;
mediump vec4 tmpvar_18;
tmpvar_18 = r_15;
gl_FragData[0] = tmpvar_18;
}

View file

@ -0,0 +1,36 @@
varying highp vec4 varUV;
uniform highp samplerCube cubehigh;
uniform mediump samplerCube cubemed;
uniform samplerCube cubelow;
uniform highp sampler2D texhigh;
uniform mediump sampler2D texmed;
uniform sampler2D texlow;
void main ()
{
mediump vec4 c_1;
lowp vec4 tmpvar_2;
tmpvar_2 = texture2D (texlow, varUV.xy);
c_1 = tmpvar_2;
mediump vec4 tmpvar_3;
tmpvar_3 = texture2D (texmed, varUV.xy);
mediump vec4 tmpvar_4;
tmpvar_4 = (c_1 + tmpvar_3);
highp vec4 tmpvar_5;
tmpvar_5 = texture2D (texhigh, varUV.xy);
highp vec4 tmpvar_6;
tmpvar_6 = (tmpvar_4 + tmpvar_5);
c_1 = tmpvar_6;
lowp vec4 tmpvar_7;
tmpvar_7 = textureCube (cubelow, varUV.xyz);
mediump vec4 tmpvar_8;
tmpvar_8 = textureCube (cubemed, varUV.xyz);
mediump vec4 tmpvar_9;
tmpvar_9 = ((c_1 + tmpvar_7) + tmpvar_8);
highp vec4 tmpvar_10;
tmpvar_10 = textureCube (cubehigh, varUV.xyz);
highp vec4 tmpvar_11;
tmpvar_11 = (tmpvar_9 + tmpvar_10);
c_1 = tmpvar_11;
gl_FragData[0] = c_1;
}

View file

@ -1,6 +1,6 @@
#extension GL_ARB_shader_texture_lod : require
#extension GL_EXT_shader_texture_lod : require
vec4 xll_tex2Dlod(sampler2D s, vec4 coord) {
return texture2DLod( s, coord.xy, coord.w);
return texture2DLodEXT( s, coord.xy, coord.w);
}
uniform sampler2D tex;
mediump vec4 xlat_main( in highp vec4 uv );

View file

@ -1,4 +1,4 @@
#extension GL_ARB_shader_texture_lod : enable
#extension GL_EXT_shader_texture_lod : enable
varying highp vec4 xlv_TEXCOORD0;
uniform sampler2D tex;
vec4 xll_tex2Dlod (
@ -7,7 +7,7 @@ vec4 xll_tex2Dlod (
)
{
lowp vec4 tmpvar_3;
tmpvar_3 = texture2DLod (s_1, coord_2.xy, coord_2.w);
tmpvar_3 = texture2DLodEXT (s_1, coord_2.xy, coord_2.w);
return tmpvar_3;
}

View file

@ -1,11 +1,11 @@
#extension GL_ARB_shader_texture_lod : enable
#extension GL_EXT_shader_texture_lod : enable
varying highp vec4 xlv_TEXCOORD0;
uniform sampler2D tex;
void main ()
{
mediump vec4 tmpvar_1;
lowp vec4 tmpvar_2;
tmpvar_2 = texture2DLod (tex, xlv_TEXCOORD0.xy, 0.0);
tmpvar_2 = texture2DLodEXT (tex, xlv_TEXCOORD0.xy, 0.0);
tmpvar_1 = tmpvar_2;
gl_FragData[0] = tmpvar_1;
}

View file

@ -6,7 +6,7 @@ uniform sampler2D tex;
void main ()
{
lowp vec4 tmpvar_1;
tmpvar_1 = (((((texture2DProj (tex, uv) + texture2DProj (tex, uv.xyz)) + texture2DProjLod (tex, uv, 1.0)) + texture2DProjLod (tex, uv.xyz, 1.0)) + vec4(shadow2DEXT (shadowmap, uv.xyz))) + vec4(shadow2DProjEXT (shadowmap, uv)));
tmpvar_1 = (((((texture2DProj (tex, uv) + texture2DProj (tex, uv.xyz)) + texture2DProjLodEXT (tex, uv, 1.0)) + texture2DProjLodEXT (tex, uv.xyz, 1.0)) + vec4(shadow2DEXT (shadowmap, uv.xyz))) + vec4(shadow2DProjEXT (shadowmap, uv)));
gl_FragColor = tmpvar_1;
}

View file

@ -12,13 +12,13 @@ vec3 FxaaFilterReturn( in vec3 rgb );
vec3 FxaaPixelShader( in vec2 pos, in sampler2D tex, in vec2 rcpFrame );
vec4 xlat_main( in vec2 uv );
vec4 FxaaTexOff( in sampler2D tex, in vec2 pos, in vec2 off, in vec2 rcpFrame ) {
return xll_tex2Dlod( tex, vec4( (pos.xy + (off * rcpFrame)), 0.00000, 0.00000));
return xll_tex2Dlod( tex, vec4( (pos.xy + (off * rcpFrame)), 0.0, 0.0));
}
vec4 FxaaTexLod0( in sampler2D tex, in vec2 pos ) {
return xll_tex2Dlod( tex, vec4( pos.xy , 0.00000, 0.00000));
return xll_tex2Dlod( tex, vec4( pos.xy, 0.0, 0.0));
}
float FxaaLuma( in vec3 rgb ) {
return ((rgb.y * 1.96321) + rgb.x );
return ((rgb.y * (0.587 / 0.299)) + rgb.x);
}
vec3 FxaaLerp3( in vec3 a, in vec3 b, in float amountOfA ) {
return ((vec3( (-amountOfA), (-amountOfA), (-amountOfA)) * b) + ((a * vec3( amountOfA, amountOfA, amountOfA)) + b));
@ -27,98 +27,52 @@ vec3 FxaaFilterReturn( in vec3 rgb ) {
return rgb;
}
vec3 FxaaPixelShader( in vec2 pos, in sampler2D tex, in vec2 rcpFrame ) {
vec3 rgbN;
vec3 rgbW;
vec3 rgbM;
vec3 rgbE;
vec3 rgbS;
float lumaN;
float lumaW;
float lumaM;
float lumaE;
float lumaS;
float rangeMin;
float rangeMax;
float range;
vec3 rgbL;
float lumaL;
float rangeL;
float blendL;
vec3 rgbNW;
vec3 rgbNE;
vec3 rgbSW;
vec3 rgbSE;
float lumaNW;
float lumaNE;
float lumaSW;
float lumaSE;
float edgeVert;
float edgeHorz;
bool horzSpan;
float lengthSign;
float gradientN;
float gradientS;
bool pairN;
vec2 posN;
vec2 posP;
vec2 offNP;
float lumaEndN;
float lumaEndP;
bool doneN = false;
bool doneP = false;
int i = 0;
float dstN;
float dstP;
bool directionN;
float spanLength;
float subPixelOffset;
vec3 rgbF;
rgbN = FxaaTexOff( tex, pos.xy , vec2( 0.00000, -1.00000), rcpFrame).xyz ;
rgbW = FxaaTexOff( tex, pos.xy , vec2( -1.00000, 0.00000), rcpFrame).xyz ;
rgbM = FxaaTexOff( tex, pos.xy , vec2( 0.00000, 0.00000), rcpFrame).xyz ;
rgbE = FxaaTexOff( tex, pos.xy , vec2( 1.00000, 0.00000), rcpFrame).xyz ;
rgbS = FxaaTexOff( tex, pos.xy , vec2( 0.00000, 1.00000), rcpFrame).xyz ;
lumaN = FxaaLuma( rgbN);
lumaW = FxaaLuma( rgbW);
lumaM = FxaaLuma( rgbM);
lumaE = FxaaLuma( rgbE);
lumaS = FxaaLuma( rgbS);
rangeMin = min( lumaM, min( min( lumaN, lumaW), min( lumaS, lumaE)));
rangeMax = max( lumaM, max( max( lumaN, lumaW), max( lumaS, lumaE)));
range = (rangeMax - rangeMin);
if ( (range < max( 0.0416667, (rangeMax * 0.125000))) ){
vec3 rgbN = FxaaTexOff( tex, pos.xy, vec2( 0.0, -1.0), rcpFrame).xyz;
vec3 rgbW = FxaaTexOff( tex, pos.xy, vec2( -1.0, 0.0), rcpFrame).xyz;
vec3 rgbM = FxaaTexOff( tex, pos.xy, vec2( 0.0, 0.0), rcpFrame).xyz;
vec3 rgbE = FxaaTexOff( tex, pos.xy, vec2( 1.0, 0.0), rcpFrame).xyz;
vec3 rgbS = FxaaTexOff( tex, pos.xy, vec2( 0.0, 1.0), rcpFrame).xyz;
float lumaN = FxaaLuma( rgbN);
float lumaW = FxaaLuma( rgbW);
float lumaM = FxaaLuma( rgbM);
float lumaE = FxaaLuma( rgbE);
float lumaS = FxaaLuma( rgbS);
float rangeMin = min( lumaM, min( min( lumaN, lumaW), min( lumaS, lumaE)));
float rangeMax = max( lumaM, max( max( lumaN, lumaW), max( lumaS, lumaE)));
float range = (rangeMax - rangeMin);
if ((range < max( (1.0 / 24.0), (rangeMax * (1.0 / 8.0))))){
return FxaaFilterReturn( rgbM);
}
rgbL = ((((rgbN + rgbW) + rgbM) + rgbE) + rgbS);
lumaL = ((((lumaN + lumaW) + lumaE) + lumaS) * 0.250000);
rangeL = abs( (lumaL - lumaM) );
blendL = (max( 0.00000, ((rangeL / range) - 0.250000)) * 1.33333);
blendL = min( 0.750000, blendL);
rgbNW = FxaaTexOff( tex, pos.xy , vec2( -1.00000, -1.00000), rcpFrame).xyz ;
rgbNE = FxaaTexOff( tex, pos.xy , vec2( 1.00000, -1.00000), rcpFrame).xyz ;
rgbSW = FxaaTexOff( tex, pos.xy , vec2( -1.00000, 1.00000), rcpFrame).xyz ;
rgbSE = FxaaTexOff( tex, pos.xy , vec2( 1.00000, 1.00000), rcpFrame).xyz ;
vec3 rgbL = ((((rgbN + rgbW) + rgbM) + rgbE) + rgbS);
float lumaL = ((((lumaN + lumaW) + lumaE) + lumaS) * 0.25);
float rangeL = abs((lumaL - lumaM));
float blendL = (max( 0.0, ((rangeL / range) - (1.0 / 4.0))) * (1.0 / (1.0 - (1.0 / 4.0))));
blendL = min( (3.0 / 4.0), blendL);
vec3 rgbNW = FxaaTexOff( tex, pos.xy, vec2( -1.0, -1.0), rcpFrame).xyz;
vec3 rgbNE = FxaaTexOff( tex, pos.xy, vec2( 1.0, -1.0), rcpFrame).xyz;
vec3 rgbSW = FxaaTexOff( tex, pos.xy, vec2( -1.0, 1.0), rcpFrame).xyz;
vec3 rgbSE = FxaaTexOff( tex, pos.xy, vec2( 1.0, 1.0), rcpFrame).xyz;
rgbL += (((rgbNW + rgbNE) + rgbSW) + rgbSE);
rgbL *= vec3( 0.111111, 0.111111, 0.111111);
lumaNW = FxaaLuma( rgbNW);
lumaNE = FxaaLuma( rgbNE);
lumaSW = FxaaLuma( rgbSW);
lumaSE = FxaaLuma( rgbSE);
edgeVert = ((abs( (((0.250000 * lumaNW) + (-0.500000 * lumaN)) + (0.250000 * lumaNE)) ) + abs( (((0.500000 * lumaW) + (-1.00000 * lumaM)) + (0.500000 * lumaE)) )) + abs( (((0.250000 * lumaSW) + (-0.500000 * lumaS)) + (0.250000 * lumaSE)) ));
edgeHorz = ((abs( (((0.250000 * lumaNW) + (-0.500000 * lumaW)) + (0.250000 * lumaSW)) ) + abs( (((0.500000 * lumaN) + (-1.00000 * lumaM)) + (0.500000 * lumaS)) )) + abs( (((0.250000 * lumaNE) + (-0.500000 * lumaE)) + (0.250000 * lumaSE)) ));
horzSpan = (edgeHorz >= edgeVert);
lengthSign = (( horzSpan ) ? ( ( -rcpFrame.y ) ) : ( ( -rcpFrame.x ) ));
rgbL *= vec3( (1.0 / 9.0), (1.0 / 9.0), (1.0 / 9.0));
float lumaNW = FxaaLuma( rgbNW);
float lumaNE = FxaaLuma( rgbNE);
float lumaSW = FxaaLuma( rgbSW);
float lumaSE = FxaaLuma( rgbSE);
float edgeVert = ((abs((((0.25 * lumaNW) + ((-0.5) * lumaN)) + (0.25 * lumaNE))) + abs((((0.5 * lumaW) + ((-1.0) * lumaM)) + (0.5 * lumaE)))) + abs((((0.25 * lumaSW) + ((-0.5) * lumaS)) + (0.25 * lumaSE))));
float edgeHorz = ((abs((((0.25 * lumaNW) + ((-0.5) * lumaW)) + (0.25 * lumaSW))) + abs((((0.5 * lumaN) + ((-1.0) * lumaM)) + (0.5 * lumaS)))) + abs((((0.25 * lumaNE) + ((-0.5) * lumaE)) + (0.25 * lumaSE))));
bool horzSpan = (edgeHorz >= edgeVert);
float lengthSign = (( horzSpan ) ? ( (-rcpFrame.y) ) : ( (-rcpFrame.x) ));
if ((!horzSpan)){
lumaN = lumaW;
}
if ((!horzSpan)){
lumaS = lumaE;
}
gradientN = abs( (lumaN - lumaM) );
gradientS = abs( (lumaS - lumaM) );
lumaN = ((lumaN + lumaM) * 0.500000);
lumaS = ((lumaS + lumaM) * 0.500000);
pairN = (gradientN >= gradientS);
float gradientN = abs((lumaN - lumaM));
float gradientS = abs((lumaS - lumaM));
lumaN = ((lumaN + lumaM) * 0.5);
lumaS = ((lumaS + lumaM) * 0.5);
bool pairN = (gradientN >= gradientS);
if ((!pairN)){
lumaN = lumaS;
}
@ -126,17 +80,21 @@ vec3 FxaaPixelShader( in vec2 pos, in sampler2D tex, in vec2 rcpFrame ) {
gradientN = gradientS;
}
if ((!pairN)){
lengthSign *= -1.00000;
lengthSign *= (-1.0);
}
posN.x = (pos.x + (( horzSpan ) ? ( 0.00000 ) : ( (lengthSign * 0.500000) )));
posN.y = (pos.y + (( horzSpan ) ? ( (lengthSign * 0.500000) ) : ( 0.00000 )));
gradientN *= 0.250000;
posP = posN;
offNP = (( horzSpan ) ? ( vec2( rcpFrame.x , 0.00000) ) : ( vec2( 0.00000, rcpFrame.y ) ));
lumaEndN = lumaN;
lumaEndP = lumaN;
posN += (offNP * vec2( -1.00000, -1.00000));
posP += (offNP * vec2( 1.00000, 1.00000));
vec2 posN;
posN.x = (pos.x + (( horzSpan ) ? ( 0.0 ) : ( (lengthSign * 0.5) )));
posN.y = (pos.y + (( horzSpan ) ? ( (lengthSign * 0.5) ) : ( 0.0 )));
gradientN *= (1.0 / 4.0);
vec2 posP = posN;
vec2 offNP = (( horzSpan ) ? ( vec2( rcpFrame.x, 0.0) ) : ( vec2( 0.0, rcpFrame.y) ));
float lumaEndN = lumaN;
float lumaEndP = lumaN;
bool doneN = false;
bool doneP = false;
posN += (offNP * vec2( (-1.0), (-1.0)));
posP += (offNP * vec2( 1.0, 1.0));
int i = 0;
for ( ; (i < 16); (i++)) {
if ((!doneN)){
lumaEndN = FxaaLuma( FxaaTexLod0( tex, posN.xy).xyz);
@ -156,21 +114,21 @@ vec3 FxaaPixelShader( in vec2 pos, in sampler2D tex, in vec2 rcpFrame ) {
posP += offNP;
}
}
dstN = (( horzSpan ) ? ( (pos.x - posN.x ) ) : ( (pos.y - posN.y ) ));
dstP = (( horzSpan ) ? ( (posP.x - pos.x ) ) : ( (posP.y - pos.y ) ));
directionN = (dstN < dstP);
float dstN = (( horzSpan ) ? ( (pos.x - posN.x) ) : ( (pos.y - posN.y) ));
float dstP = (( horzSpan ) ? ( (posP.x - pos.x) ) : ( (posP.y - pos.y) ));
bool directionN = (dstN < dstP);
lumaEndN = (( directionN ) ? ( lumaEndN ) : ( lumaEndP ));
if ( (((lumaM - lumaN) < 0.00000) == ((lumaEndN - lumaN) < 0.00000)) ){
lengthSign = 0.00000;
if ((((lumaM - lumaN) < 0.0) == ((lumaEndN - lumaN) < 0.0))){
lengthSign = 0.0;
}
spanLength = (dstP + dstN);
float spanLength = (dstP + dstN);
dstN = (( directionN ) ? ( dstN ) : ( dstP ));
subPixelOffset = ((0.500000 + (dstN * (-1.00000 / spanLength))) * lengthSign);
rgbF = FxaaTexLod0( tex, vec2( (pos.x + (( horzSpan ) ? ( 0.00000 ) : ( subPixelOffset ))), (pos.y + (( horzSpan ) ? ( subPixelOffset ) : ( 0.00000 ))))).xyz ;
float subPixelOffset = ((0.5 + (dstN * ((-1.0) / spanLength))) * lengthSign);
vec3 rgbF = FxaaTexLod0( tex, vec2( (pos.x + (( horzSpan ) ? ( 0.0 ) : ( subPixelOffset ))), (pos.y + (( horzSpan ) ? ( subPixelOffset ) : ( 0.0 ))))).xyz;
return FxaaFilterReturn( FxaaLerp3( rgbL, rgbF, blendL));
}
vec4 xlat_main( in vec2 uv ) {
return vec4( FxaaPixelShader( uv.xy , _MainTex, _MainTex_TexelSize.xy ).xyz , 0.00000);
return vec4( FxaaPixelShader( uv.xy, _MainTex, _MainTex_TexelSize.xy).xyz, 0.0);
}
varying vec2 xlv_TEXCOORD0;
void main() {

View file

@ -44,7 +44,7 @@ float FxaaLuma (
in vec3 rgb_14
)
{
return ((rgb_14.y * 1.96321) + rgb_14.x);
return ((rgb_14.y * (0.587 / 0.299)) + rgb_14.x);
}
vec3 FxaaLerp3 (
@ -123,289 +123,289 @@ vec3 FxaaPixelShader (
vec3 rgbM_67;
vec3 rgbW_68;
vec3 rgbN_69;
bool tmpvar_70;
tmpvar_70 = bool(0);
doneN_32 = tmpvar_70;
bool tmpvar_71;
tmpvar_71 = bool(0);
doneP_31 = tmpvar_71;
int tmpvar_72;
tmpvar_72 = 0;
i_30 = tmpvar_72;
vec4 tmpvar_73;
tmpvar_73 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, -1.0), rcpFrame_23);
vec3 tmpvar_74;
tmpvar_74 = tmpvar_73.xyz;
rgbN_69 = tmpvar_74;
vec4 tmpvar_75;
tmpvar_75 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, 0.0), rcpFrame_23);
vec3 tmpvar_76;
tmpvar_76 = tmpvar_75.xyz;
rgbW_68 = tmpvar_76;
vec4 tmpvar_77;
tmpvar_77 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, 0.0), rcpFrame_23);
vec3 tmpvar_78;
tmpvar_78 = tmpvar_77.xyz;
rgbM_67 = tmpvar_78;
vec4 tmpvar_79;
tmpvar_79 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, 0.0), rcpFrame_23);
vec3 tmpvar_80;
tmpvar_80 = tmpvar_79.xyz;
rgbE_66 = tmpvar_80;
vec4 tmpvar_81;
tmpvar_81 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, 1.0), rcpFrame_23);
vec3 tmpvar_82;
tmpvar_82 = tmpvar_81.xyz;
rgbS_65 = tmpvar_82;
vec4 tmpvar_70;
tmpvar_70 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, -1.0), rcpFrame_23);
vec3 tmpvar_71;
tmpvar_71 = tmpvar_70.xyz;
rgbN_69 = tmpvar_71;
vec4 tmpvar_72;
tmpvar_72 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, 0.0), rcpFrame_23);
vec3 tmpvar_73;
tmpvar_73 = tmpvar_72.xyz;
rgbW_68 = tmpvar_73;
vec4 tmpvar_74;
tmpvar_74 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, 0.0), rcpFrame_23);
vec3 tmpvar_75;
tmpvar_75 = tmpvar_74.xyz;
rgbM_67 = tmpvar_75;
vec4 tmpvar_76;
tmpvar_76 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, 0.0), rcpFrame_23);
vec3 tmpvar_77;
tmpvar_77 = tmpvar_76.xyz;
rgbE_66 = tmpvar_77;
vec4 tmpvar_78;
tmpvar_78 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, 1.0), rcpFrame_23);
vec3 tmpvar_79;
tmpvar_79 = tmpvar_78.xyz;
rgbS_65 = tmpvar_79;
float tmpvar_80;
tmpvar_80 = FxaaLuma (rgbN_69);
float tmpvar_81;
tmpvar_81 = tmpvar_80;
lumaN_64 = tmpvar_81;
float tmpvar_82;
tmpvar_82 = FxaaLuma (rgbW_68);
float tmpvar_83;
tmpvar_83 = FxaaLuma (rgbN_69);
tmpvar_83 = tmpvar_82;
lumaW_63 = tmpvar_83;
float tmpvar_84;
tmpvar_84 = tmpvar_83;
lumaN_64 = tmpvar_84;
tmpvar_84 = FxaaLuma (rgbM_67);
float tmpvar_85;
tmpvar_85 = FxaaLuma (rgbW_68);
tmpvar_85 = tmpvar_84;
lumaM_62 = tmpvar_85;
float tmpvar_86;
tmpvar_86 = tmpvar_85;
lumaW_63 = tmpvar_86;
tmpvar_86 = FxaaLuma (rgbE_66);
float tmpvar_87;
tmpvar_87 = FxaaLuma (rgbM_67);
tmpvar_87 = tmpvar_86;
lumaE_61 = tmpvar_87;
float tmpvar_88;
tmpvar_88 = tmpvar_87;
lumaM_62 = tmpvar_88;
tmpvar_88 = FxaaLuma (rgbS_65);
float tmpvar_89;
tmpvar_89 = FxaaLuma (rgbE_66);
tmpvar_89 = tmpvar_88;
lumaS_60 = tmpvar_89;
float tmpvar_90;
tmpvar_90 = tmpvar_89;
lumaE_61 = tmpvar_90;
tmpvar_90 = min (lumaN_64, lumaW_63);
float tmpvar_91;
tmpvar_91 = FxaaLuma (rgbS_65);
tmpvar_91 = min (lumaS_60, lumaE_61);
float tmpvar_92;
tmpvar_92 = tmpvar_91;
lumaS_60 = tmpvar_92;
tmpvar_92 = min (tmpvar_90, tmpvar_91);
float tmpvar_93;
tmpvar_93 = min (lumaN_64, lumaW_63);
tmpvar_93 = min (lumaM_62, tmpvar_92);
float tmpvar_94;
tmpvar_94 = min (lumaS_60, lumaE_61);
tmpvar_94 = tmpvar_93;
rangeMin_59 = tmpvar_94;
float tmpvar_95;
tmpvar_95 = min (tmpvar_93, tmpvar_94);
tmpvar_95 = max (lumaN_64, lumaW_63);
float tmpvar_96;
tmpvar_96 = min (lumaM_62, tmpvar_95);
tmpvar_96 = max (lumaS_60, lumaE_61);
float tmpvar_97;
tmpvar_97 = tmpvar_96;
rangeMin_59 = tmpvar_97;
tmpvar_97 = max (tmpvar_95, tmpvar_96);
float tmpvar_98;
tmpvar_98 = max (lumaN_64, lumaW_63);
tmpvar_98 = max (lumaM_62, tmpvar_97);
float tmpvar_99;
tmpvar_99 = max (lumaS_60, lumaE_61);
tmpvar_99 = tmpvar_98;
rangeMax_58 = tmpvar_99;
float tmpvar_100;
tmpvar_100 = max (tmpvar_98, tmpvar_99);
tmpvar_100 = (rangeMax_58 - rangeMin_59);
range_57 = tmpvar_100;
float tmpvar_101;
tmpvar_101 = max (lumaM_62, tmpvar_100);
float tmpvar_102;
tmpvar_102 = tmpvar_101;
rangeMax_58 = tmpvar_102;
float tmpvar_103;
tmpvar_103 = (rangeMax_58 - rangeMin_59);
range_57 = tmpvar_103;
float tmpvar_104;
tmpvar_104 = max (0.0416667, (rangeMax_58 * 0.125));
if ((range_57 < tmpvar_104)) {
vec3 tmpvar_105;
tmpvar_105 = FxaaFilterReturn (rgbM_67);
return tmpvar_105;
tmpvar_101 = max (0.0416667, (rangeMax_58 * (1.0 / 8.0)));
if ((range_57 < tmpvar_101)) {
vec3 tmpvar_102;
tmpvar_102 = FxaaFilterReturn (rgbM_67);
return tmpvar_102;
};
vec3 tmpvar_106;
tmpvar_106 = ((((rgbN_69 + rgbW_68) + rgbM_67) + rgbE_66) + rgbS_65);
rgbL_56 = tmpvar_106;
vec3 tmpvar_103;
tmpvar_103 = ((((rgbN_69 + rgbW_68) + rgbM_67) + rgbE_66) + rgbS_65);
rgbL_56 = tmpvar_103;
float tmpvar_104;
tmpvar_104 = ((((lumaN_64 + lumaW_63) + lumaE_61) + lumaS_60) * 0.25);
lumaL_55 = tmpvar_104;
float tmpvar_105;
tmpvar_105 = abs ((lumaL_55 - lumaM_62));
float tmpvar_106;
tmpvar_106 = tmpvar_105;
rangeL_54 = tmpvar_106;
float tmpvar_107;
tmpvar_107 = ((((lumaN_64 + lumaW_63) + lumaE_61) + lumaS_60) * 0.25);
lumaL_55 = tmpvar_107;
tmpvar_107 = max (0.0, ((rangeL_54 / range_57) - (1.0 / 4.0)));
float tmpvar_108;
tmpvar_108 = abs ((lumaL_55 - lumaM_62));
tmpvar_108 = (tmpvar_107 * (1.0 / (1.0 - (1.0 / 4.0))));
blendL_53 = tmpvar_108;
float tmpvar_109;
tmpvar_109 = tmpvar_108;
rangeL_54 = tmpvar_109;
tmpvar_109 = min (0.75, blendL_53);
float tmpvar_110;
tmpvar_110 = max (0.0, ((rangeL_54 / range_57) - 0.25));
float tmpvar_111;
tmpvar_111 = (tmpvar_110 * 1.33333);
blendL_53 = tmpvar_111;
float tmpvar_112;
tmpvar_112 = min (0.75, blendL_53);
float tmpvar_113;
tmpvar_113 = tmpvar_112;
blendL_53 = tmpvar_113;
vec4 tmpvar_114;
tmpvar_114 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, -1.0), rcpFrame_23);
vec3 tmpvar_115;
tmpvar_115 = tmpvar_114.xyz;
rgbNW_52 = tmpvar_115;
vec4 tmpvar_116;
tmpvar_116 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, -1.0), rcpFrame_23);
vec3 tmpvar_117;
tmpvar_117 = tmpvar_116.xyz;
rgbNE_51 = tmpvar_117;
vec4 tmpvar_118;
tmpvar_118 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, 1.0), rcpFrame_23);
tmpvar_110 = tmpvar_109;
blendL_53 = tmpvar_110;
vec4 tmpvar_111;
tmpvar_111 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, -1.0), rcpFrame_23);
vec3 tmpvar_112;
tmpvar_112 = tmpvar_111.xyz;
rgbNW_52 = tmpvar_112;
vec4 tmpvar_113;
tmpvar_113 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, -1.0), rcpFrame_23);
vec3 tmpvar_114;
tmpvar_114 = tmpvar_113.xyz;
rgbNE_51 = tmpvar_114;
vec4 tmpvar_115;
tmpvar_115 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, 1.0), rcpFrame_23);
vec3 tmpvar_116;
tmpvar_116 = tmpvar_115.xyz;
rgbSW_50 = tmpvar_116;
vec4 tmpvar_117;
tmpvar_117 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, 1.0), rcpFrame_23);
vec3 tmpvar_118;
tmpvar_118 = tmpvar_117.xyz;
rgbSE_49 = tmpvar_118;
vec3 tmpvar_119;
tmpvar_119 = tmpvar_118.xyz;
rgbSW_50 = tmpvar_119;
vec4 tmpvar_120;
tmpvar_120 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, 1.0), rcpFrame_23);
vec3 tmpvar_121;
tmpvar_121 = tmpvar_120.xyz;
rgbSE_49 = tmpvar_121;
vec3 tmpvar_122;
tmpvar_122 = (rgbL_56 + (((rgbNW_52 + rgbNE_51) + rgbSW_50) + rgbSE_49));
rgbL_56 = tmpvar_122;
vec3 tmpvar_123;
tmpvar_123 = (rgbL_56 * vec3(0.111111, 0.111111, 0.111111));
rgbL_56 = tmpvar_123;
tmpvar_119 = (rgbL_56 + (((rgbNW_52 + rgbNE_51) + rgbSW_50) + rgbSE_49));
rgbL_56 = tmpvar_119;
vec3 tmpvar_120;
tmpvar_120 = (rgbL_56 * vec3(0.111111, 0.111111, 0.111111));
rgbL_56 = tmpvar_120;
float tmpvar_121;
tmpvar_121 = FxaaLuma (rgbNW_52);
float tmpvar_122;
tmpvar_122 = tmpvar_121;
lumaNW_48 = tmpvar_122;
float tmpvar_123;
tmpvar_123 = FxaaLuma (rgbNE_51);
float tmpvar_124;
tmpvar_124 = FxaaLuma (rgbNW_52);
tmpvar_124 = tmpvar_123;
lumaNE_47 = tmpvar_124;
float tmpvar_125;
tmpvar_125 = tmpvar_124;
lumaNW_48 = tmpvar_125;
tmpvar_125 = FxaaLuma (rgbSW_50);
float tmpvar_126;
tmpvar_126 = FxaaLuma (rgbNE_51);
tmpvar_126 = tmpvar_125;
lumaSW_46 = tmpvar_126;
float tmpvar_127;
tmpvar_127 = tmpvar_126;
lumaNE_47 = tmpvar_127;
tmpvar_127 = FxaaLuma (rgbSE_49);
float tmpvar_128;
tmpvar_128 = FxaaLuma (rgbSW_50);
tmpvar_128 = tmpvar_127;
lumaSE_45 = tmpvar_128;
float tmpvar_129;
tmpvar_129 = tmpvar_128;
lumaSW_46 = tmpvar_129;
tmpvar_129 = abs ((((0.25 * lumaNW_48) + (-(0.5) * lumaN_64)) + (0.25 * lumaNE_47)));
float tmpvar_130;
tmpvar_130 = FxaaLuma (rgbSE_49);
tmpvar_130 = abs ((((0.5 * lumaW_63) + (-(1.0) * lumaM_62)) + (0.5 * lumaE_61)));
float tmpvar_131;
tmpvar_131 = tmpvar_130;
lumaSE_45 = tmpvar_131;
tmpvar_131 = abs ((((0.25 * lumaSW_46) + (-(0.5) * lumaS_60)) + (0.25 * lumaSE_45)));
float tmpvar_132;
tmpvar_132 = abs ((((0.25 * lumaNW_48) + (-(0.5) * lumaN_64)) + (0.25 * lumaNE_47)));
tmpvar_132 = ((tmpvar_129 + tmpvar_130) + tmpvar_131);
edgeVert_44 = tmpvar_132;
float tmpvar_133;
tmpvar_133 = abs ((((0.5 * lumaW_63) + (-(1.0) * lumaM_62)) + (0.5 * lumaE_61)));
tmpvar_133 = abs ((((0.25 * lumaNW_48) + (-(0.5) * lumaW_63)) + (0.25 * lumaSW_46)));
float tmpvar_134;
tmpvar_134 = abs ((((0.25 * lumaSW_46) + (-(0.5) * lumaS_60)) + (0.25 * lumaSE_45)));
tmpvar_134 = abs ((((0.5 * lumaN_64) + (-(1.0) * lumaM_62)) + (0.5 * lumaS_60)));
float tmpvar_135;
tmpvar_135 = ((tmpvar_132 + tmpvar_133) + tmpvar_134);
edgeVert_44 = tmpvar_135;
tmpvar_135 = abs ((((0.25 * lumaNE_47) + (-(0.5) * lumaE_61)) + (0.25 * lumaSE_45)));
float tmpvar_136;
tmpvar_136 = abs ((((0.25 * lumaNW_48) + (-(0.5) * lumaW_63)) + (0.25 * lumaSW_46)));
float tmpvar_137;
tmpvar_137 = abs ((((0.5 * lumaN_64) + (-(1.0) * lumaM_62)) + (0.5 * lumaS_60)));
tmpvar_136 = ((tmpvar_133 + tmpvar_134) + tmpvar_135);
edgeHorz_43 = tmpvar_136;
bool tmpvar_137;
tmpvar_137 = (edgeHorz_43 >= edgeVert_44);
horzSpan_42 = tmpvar_137;
float tmpvar_138;
tmpvar_138 = abs ((((0.25 * lumaNE_47) + (-(0.5) * lumaE_61)) + (0.25 * lumaSE_45)));
float tmpvar_139;
tmpvar_139 = ((tmpvar_136 + tmpvar_137) + tmpvar_138);
edgeHorz_43 = tmpvar_139;
bool tmpvar_140;
tmpvar_140 = (edgeHorz_43 >= edgeVert_44);
horzSpan_42 = tmpvar_140;
float tmpvar_141;
if (horzSpan_42) {
tmpvar_141 = -(rcpFrame_23.y);
tmpvar_138 = -(rcpFrame_23.y);
} else {
tmpvar_141 = -(rcpFrame_23.x);
tmpvar_138 = -(rcpFrame_23.x);
};
float tmpvar_139;
tmpvar_139 = tmpvar_138;
lengthSign_41 = tmpvar_139;
if (!(horzSpan_42)) {
float tmpvar_140;
tmpvar_140 = lumaW_63;
lumaN_64 = tmpvar_140;
};
if (!(horzSpan_42)) {
float tmpvar_141;
tmpvar_141 = lumaE_61;
lumaS_60 = tmpvar_141;
};
float tmpvar_142;
tmpvar_142 = tmpvar_141;
lengthSign_41 = tmpvar_142;
if (!(horzSpan_42)) {
tmpvar_142 = abs ((lumaN_64 - lumaM_62));
float tmpvar_143;
tmpvar_143 = lumaW_63;
lumaN_64 = tmpvar_143;
};
if (!(horzSpan_42)) {
tmpvar_143 = tmpvar_142;
gradientN_40 = tmpvar_143;
float tmpvar_144;
tmpvar_144 = lumaE_61;
lumaS_60 = tmpvar_144;
};
tmpvar_144 = abs ((lumaS_60 - lumaM_62));
float tmpvar_145;
tmpvar_145 = abs ((lumaN_64 - lumaM_62));
tmpvar_145 = tmpvar_144;
gradientS_39 = tmpvar_145;
float tmpvar_146;
tmpvar_146 = tmpvar_145;
gradientN_40 = tmpvar_146;
tmpvar_146 = ((lumaN_64 + lumaM_62) * 0.5);
lumaN_64 = tmpvar_146;
float tmpvar_147;
tmpvar_147 = abs ((lumaS_60 - lumaM_62));
float tmpvar_148;
tmpvar_148 = tmpvar_147;
gradientS_39 = tmpvar_148;
tmpvar_147 = ((lumaS_60 + lumaM_62) * 0.5);
lumaS_60 = tmpvar_147;
bool tmpvar_148;
tmpvar_148 = (gradientN_40 >= gradientS_39);
pairN_38 = tmpvar_148;
if (!(pairN_38)) {
float tmpvar_149;
tmpvar_149 = ((lumaN_64 + lumaM_62) * 0.5);
tmpvar_149 = lumaS_60;
lumaN_64 = tmpvar_149;
};
if (!(pairN_38)) {
float tmpvar_150;
tmpvar_150 = ((lumaS_60 + lumaM_62) * 0.5);
lumaS_60 = tmpvar_150;
bool tmpvar_151;
tmpvar_151 = (gradientN_40 >= gradientS_39);
pairN_38 = tmpvar_151;
tmpvar_150 = gradientS_39;
gradientN_40 = tmpvar_150;
};
if (!(pairN_38)) {
float tmpvar_151;
tmpvar_151 = (lengthSign_41 * -(1.0));
lengthSign_41 = tmpvar_151;
};
float tmpvar_152;
tmpvar_152 = lumaS_60;
lumaN_64 = tmpvar_152;
if (horzSpan_42) {
tmpvar_152 = 0.0;
} else {
tmpvar_152 = (lengthSign_41 * 0.5);
};
if (!(pairN_38)) {
float tmpvar_153;
tmpvar_153 = gradientS_39;
gradientN_40 = tmpvar_153;
};
if (!(pairN_38)) {
tmpvar_153 = (pos_21.x + tmpvar_152);
posN_37.x = tmpvar_153;
float tmpvar_154;
tmpvar_154 = (lengthSign_41 * -(1.0));
lengthSign_41 = tmpvar_154;
if (horzSpan_42) {
tmpvar_154 = (lengthSign_41 * 0.5);
} else {
tmpvar_154 = 0.0;
};
float tmpvar_155;
if (horzSpan_42) {
tmpvar_155 = 0.0;
} else {
tmpvar_155 = (lengthSign_41 * 0.5);
};
tmpvar_155 = (pos_21.y + tmpvar_154);
posN_37.y = vec2(tmpvar_155).y;
float tmpvar_156;
tmpvar_156 = (pos_21.x + tmpvar_155);
posN_37.x = tmpvar_156;
float tmpvar_157;
tmpvar_156 = (gradientN_40 * (1.0 / 4.0));
gradientN_40 = tmpvar_156;
vec2 tmpvar_157;
tmpvar_157 = posN_37;
posP_36 = tmpvar_157;
vec2 tmpvar_158;
if (horzSpan_42) {
tmpvar_157 = (lengthSign_41 * 0.5);
vec2 tmpvar_159;
tmpvar_159.y = 0.0;
tmpvar_159.x = rcpFrame_23.x;
tmpvar_158 = tmpvar_159;
} else {
tmpvar_157 = 0.0;
};
float tmpvar_158;
tmpvar_158 = (pos_21.y + tmpvar_157);
posN_37.y = vec2(tmpvar_158).y;
float tmpvar_159;
tmpvar_159 = (gradientN_40 * 0.25);
gradientN_40 = tmpvar_159;
vec2 tmpvar_160;
tmpvar_160 = posN_37;
posP_36 = tmpvar_160;
vec2 tmpvar_161;
if (horzSpan_42) {
vec2 tmpvar_162;
tmpvar_162.y = 0.0;
tmpvar_162.x = rcpFrame_23.x;
tmpvar_161 = tmpvar_162;
} else {
vec2 tmpvar_163;
tmpvar_163.x = 0.0;
tmpvar_163.y = rcpFrame_23.y;
tmpvar_161 = tmpvar_163;
tmpvar_160.x = 0.0;
tmpvar_160.y = rcpFrame_23.y;
tmpvar_158 = tmpvar_160;
};
vec2 tmpvar_164;
tmpvar_164 = tmpvar_161;
offNP_35 = tmpvar_164;
float tmpvar_165;
tmpvar_165 = lumaN_64;
lumaEndN_34 = tmpvar_165;
float tmpvar_166;
tmpvar_166 = lumaN_64;
lumaEndP_33 = tmpvar_166;
vec2 tmpvar_161;
tmpvar_161 = tmpvar_158;
offNP_35 = tmpvar_161;
float tmpvar_162;
tmpvar_162 = lumaN_64;
lumaEndN_34 = tmpvar_162;
float tmpvar_163;
tmpvar_163 = lumaN_64;
lumaEndP_33 = tmpvar_163;
bool tmpvar_164;
tmpvar_164 = bool(0);
doneN_32 = tmpvar_164;
bool tmpvar_165;
tmpvar_165 = bool(0);
doneP_31 = tmpvar_165;
vec2 tmpvar_166;
tmpvar_166 = (posN_37 + (offNP_35 * vec2(-1.0, -1.0)));
posN_37 = tmpvar_166;
vec2 tmpvar_167;
tmpvar_167 = (posN_37 + (offNP_35 * vec2(-1.0, -1.0)));
posN_37 = tmpvar_167;
vec2 tmpvar_168;
tmpvar_168 = (posP_36 + (offNP_35 * vec2(1.0, 1.0)));
posP_36 = tmpvar_168;
tmpvar_167 = (posP_36 + (offNP_35 * vec2(1.0, 1.0)));
posP_36 = tmpvar_167;
int tmpvar_168;
tmpvar_168 = 0;
i_30 = tmpvar_168;
while (true) {
if (!((i_30 < 16))) {
break;

View file

@ -19,9 +19,6 @@ void main ()
float lengthSign_12;
float lumaS_13;
float lumaN_14;
doneN_5 = bool(0);
doneP_4 = bool(0);
i_3 = 0;
vec4 tmpvar_15;
tmpvar_15.zw = vec2(0.0, 0.0);
tmpvar_15.xy = (xlv_TEXCOORD0 + (vec2(0.0, -1.0) * _MainTex_TexelSize.xy));
@ -163,12 +160,12 @@ void main ()
offNP_8 = tmpvar_54;
lumaEndN_7 = lumaN_14;
lumaEndP_6 = lumaN_14;
doneN_5 = bool(0);
doneP_4 = bool(0);
posN_10 = (posN_10 + (tmpvar_54 * vec2(-1.0, -1.0)));
posP_9 = (posP_9 + tmpvar_54);
while (true) {
if ((i_3 >= 16)) {
break;
};
i_3 = 0;
for (int i_3 = 0; i_3 < 16; ) {
if (!(doneN_5)) {
vec4 tmpvar_57;
tmpvar_57 = texture2DLod (_MainTex, posN_10, 0.0);

View file

@ -14,23 +14,23 @@ void main ()
highp vec2 dir_5;
highp float lumaM_6;
lowp vec4 tmpvar_7;
tmpvar_7 = texture2DLod (_MainTex, xlv_TEXCOORD1.xy, 0.0);
tmpvar_7 = texture2DLodEXT (_MainTex, xlv_TEXCOORD1.xy, 0.0);
highp float tmpvar_8;
tmpvar_8 = tmpvar_7.y;
lowp vec4 tmpvar_9;
tmpvar_9 = texture2DLod (_MainTex, xlv_TEXCOORD1.xw, 0.0);
tmpvar_9 = texture2DLodEXT (_MainTex, xlv_TEXCOORD1.xw, 0.0);
highp float tmpvar_10;
tmpvar_10 = tmpvar_9.y;
lowp vec4 tmpvar_11;
tmpvar_11 = texture2DLod (_MainTex, xlv_TEXCOORD1.zy, 0.0);
tmpvar_11 = texture2DLodEXT (_MainTex, xlv_TEXCOORD1.zy, 0.0);
highp float tmpvar_12;
tmpvar_12 = tmpvar_11.y;
lowp vec4 tmpvar_13;
tmpvar_13 = texture2DLod (_MainTex, xlv_TEXCOORD1.zw, 0.0);
tmpvar_13 = texture2DLodEXT (_MainTex, xlv_TEXCOORD1.zw, 0.0);
highp float tmpvar_14;
tmpvar_14 = tmpvar_13.y;
lowp vec4 tmpvar_15;
tmpvar_15 = texture2DLod (_MainTex, xlv_TEXCOORD0, 0.0);
tmpvar_15 = texture2DLodEXT (_MainTex, xlv_TEXCOORD0, 0.0);
lowp float tmpvar_16;
tmpvar_16 = tmpvar_15.y;
lumaM_6 = tmpvar_16;
@ -70,9 +70,9 @@ void main ()
tmpvar_29.zw = vec2(0.0, 0.0);
tmpvar_29.xy = (xlv_TEXCOORD0 + (tmpvar_27 * fxaaConsoleRcpFrameOpt2_2.zw));
lowp vec4 tmpvar_30;
tmpvar_30 = (texture2DLod (_MainTex, tmpvar_25.xy, 0.0) + texture2DLod (_MainTex, tmpvar_26.xy, 0.0));
tmpvar_30 = (texture2DLodEXT (_MainTex, tmpvar_25.xy, 0.0) + texture2DLodEXT (_MainTex, tmpvar_26.xy, 0.0));
lowp vec4 tmpvar_31;
tmpvar_31 = (((texture2DLod (_MainTex, tmpvar_28.xy, 0.0) + texture2DLod (_MainTex, tmpvar_29.xy, 0.0)) * 0.25) + (tmpvar_30 * 0.25));
tmpvar_31 = (((texture2DLodEXT (_MainTex, tmpvar_28.xy, 0.0) + texture2DLodEXT (_MainTex, tmpvar_29.xy, 0.0)) * 0.25) + (tmpvar_30 * 0.25));
rgbyB_4 = tmpvar_31;
if (((tmpvar_31.y < tmpvar_19) || (tmpvar_31.y > tmpvar_18))) {
rgbyB_4.xyz = (tmpvar_30.xyz * 0.5);

View file

@ -23,13 +23,13 @@ void main ()
posM_15.x = xlv_TEXCOORD0.x;
posM_15.y = xlv_TEXCOORD0.y;
lowp vec4 tmpvar_16;
tmpvar_16 = texture2DLod (_MainTex, xlv_TEXCOORD0, 0.0);
tmpvar_16 = texture2DLodEXT (_MainTex, xlv_TEXCOORD0, 0.0);
rgbyM_14 = tmpvar_16;
highp vec4 tmpvar_17;
tmpvar_17.zw = vec2(0.0, 0.0);
tmpvar_17.xy = (xlv_TEXCOORD0 + (vec2(0.0, 1.0) * _MainTex_TexelSize.xy));
lowp vec4 tmpvar_18;
tmpvar_18 = texture2DLod (_MainTex, tmpvar_17.xy, 0.0);
tmpvar_18 = texture2DLodEXT (_MainTex, tmpvar_17.xy, 0.0);
highp vec4 rgba_19;
rgba_19 = tmpvar_18;
lumaS_13 = rgba_19.w;
@ -37,7 +37,7 @@ void main ()
tmpvar_20.zw = vec2(0.0, 0.0);
tmpvar_20.xy = (xlv_TEXCOORD0 + (vec2(1.0, 0.0) * _MainTex_TexelSize.xy));
lowp vec4 tmpvar_21;
tmpvar_21 = texture2DLod (_MainTex, tmpvar_20.xy, 0.0);
tmpvar_21 = texture2DLodEXT (_MainTex, tmpvar_20.xy, 0.0);
highp float tmpvar_22;
highp vec4 rgba_23;
rgba_23 = tmpvar_21;
@ -46,7 +46,7 @@ void main ()
tmpvar_24.zw = vec2(0.0, 0.0);
tmpvar_24.xy = (xlv_TEXCOORD0 + (vec2(0.0, -1.0) * _MainTex_TexelSize.xy));
lowp vec4 tmpvar_25;
tmpvar_25 = texture2DLod (_MainTex, tmpvar_24.xy, 0.0);
tmpvar_25 = texture2DLodEXT (_MainTex, tmpvar_24.xy, 0.0);
highp vec4 rgba_26;
rgba_26 = tmpvar_25;
lumaN_12 = rgba_26.w;
@ -54,7 +54,7 @@ void main ()
tmpvar_27.zw = vec2(0.0, 0.0);
tmpvar_27.xy = (xlv_TEXCOORD0 + (vec2(-1.0, 0.0) * _MainTex_TexelSize.xy));
lowp vec4 tmpvar_28;
tmpvar_28 = texture2DLod (_MainTex, tmpvar_27.xy, 0.0);
tmpvar_28 = texture2DLodEXT (_MainTex, tmpvar_27.xy, 0.0);
highp float tmpvar_29;
highp vec4 rgba_30;
rgba_30 = tmpvar_28;
@ -70,28 +70,28 @@ void main ()
tmpvar_33.zw = vec2(0.0, 0.0);
tmpvar_33.xy = (xlv_TEXCOORD0 + (vec2(-1.0, -1.0) * _MainTex_TexelSize.xy));
lowp vec4 tmpvar_34;
tmpvar_34 = texture2DLod (_MainTex, tmpvar_33.xy, 0.0);
tmpvar_34 = texture2DLodEXT (_MainTex, tmpvar_33.xy, 0.0);
highp vec4 rgba_35;
rgba_35 = tmpvar_34;
highp vec4 tmpvar_36;
tmpvar_36.zw = vec2(0.0, 0.0);
tmpvar_36.xy = (xlv_TEXCOORD0 + _MainTex_TexelSize.xy);
lowp vec4 tmpvar_37;
tmpvar_37 = texture2DLod (_MainTex, tmpvar_36.xy, 0.0);
tmpvar_37 = texture2DLodEXT (_MainTex, tmpvar_36.xy, 0.0);
highp vec4 rgba_38;
rgba_38 = tmpvar_37;
highp vec4 tmpvar_39;
tmpvar_39.zw = vec2(0.0, 0.0);
tmpvar_39.xy = (xlv_TEXCOORD0 + (vec2(1.0, -1.0) * _MainTex_TexelSize.xy));
lowp vec4 tmpvar_40;
tmpvar_40 = texture2DLod (_MainTex, tmpvar_39.xy, 0.0);
tmpvar_40 = texture2DLodEXT (_MainTex, tmpvar_39.xy, 0.0);
highp vec4 rgba_41;
rgba_41 = tmpvar_40;
highp vec4 tmpvar_42;
tmpvar_42.zw = vec2(0.0, 0.0);
tmpvar_42.xy = (xlv_TEXCOORD0 + (vec2(-1.0, 1.0) * _MainTex_TexelSize.xy));
lowp vec4 tmpvar_43;
tmpvar_43 = texture2DLod (_MainTex, tmpvar_42.xy, 0.0);
tmpvar_43 = texture2DLodEXT (_MainTex, tmpvar_42.xy, 0.0);
highp vec4 rgba_44;
rgba_44 = tmpvar_43;
highp float tmpvar_45;
@ -163,14 +163,14 @@ void main ()
highp float tmpvar_61;
tmpvar_61 = ((-2.0 * tmpvar_58) + 3.0);
lowp vec4 tmpvar_62;
tmpvar_62 = texture2DLod (_MainTex, posN_8, 0.0);
tmpvar_62 = texture2DLodEXT (_MainTex, posN_8, 0.0);
highp vec4 rgba_63;
rgba_63 = tmpvar_62;
lumaEndN_6 = rgba_63.w;
highp float tmpvar_64;
tmpvar_64 = (tmpvar_58 * tmpvar_58);
lowp vec4 tmpvar_65;
tmpvar_65 = texture2DLod (_MainTex, posP_7, 0.0);
tmpvar_65 = texture2DLodEXT (_MainTex, posP_7, 0.0);
highp vec4 rgba_66;
rgba_66 = tmpvar_65;
lumaEndP_5 = rgba_66.w;
@ -210,14 +210,14 @@ void main ()
if (tmpvar_74) {
if (!(tmpvar_72)) {
lowp vec4 tmpvar_75;
tmpvar_75 = texture2DLod (_MainTex, posN_8, 0.0);
tmpvar_75 = texture2DLodEXT (_MainTex, posN_8, 0.0);
highp vec4 rgba_76;
rgba_76 = tmpvar_75;
lumaEndN_6 = rgba_76.w;
};
if (!(tmpvar_73)) {
lowp vec4 tmpvar_77;
tmpvar_77 = texture2DLod (_MainTex, posP_7, 0.0);
tmpvar_77 = texture2DLodEXT (_MainTex, posP_7, 0.0);
highp vec4 rgba_78;
rgba_78 = tmpvar_77;
lumaEndP_5 = rgba_78.w;
@ -249,14 +249,14 @@ void main ()
if (tmpvar_81) {
if (!(tmpvar_79)) {
lowp vec4 tmpvar_82;
tmpvar_82 = texture2DLod (_MainTex, posN_8, 0.0);
tmpvar_82 = texture2DLodEXT (_MainTex, posN_8, 0.0);
highp vec4 rgba_83;
rgba_83 = tmpvar_82;
lumaEndN_6 = rgba_83.w;
};
if (!(tmpvar_80)) {
lowp vec4 tmpvar_84;
tmpvar_84 = texture2DLod (_MainTex, posP_7, 0.0);
tmpvar_84 = texture2DLodEXT (_MainTex, posP_7, 0.0);
highp vec4 rgba_85;
rgba_85 = tmpvar_84;
lumaEndP_5 = rgba_85.w;
@ -288,14 +288,14 @@ void main ()
if (tmpvar_88) {
if (!(tmpvar_86)) {
lowp vec4 tmpvar_89;
tmpvar_89 = texture2DLod (_MainTex, posN_8, 0.0);
tmpvar_89 = texture2DLodEXT (_MainTex, posN_8, 0.0);
highp vec4 rgba_90;
rgba_90 = tmpvar_89;
lumaEndN_6 = rgba_90.w;
};
if (!(tmpvar_87)) {
lowp vec4 tmpvar_91;
tmpvar_91 = texture2DLod (_MainTex, posP_7, 0.0);
tmpvar_91 = texture2DLodEXT (_MainTex, posP_7, 0.0);
highp vec4 rgba_92;
rgba_92 = tmpvar_91;
lumaEndP_5 = rgba_92.w;
@ -327,14 +327,14 @@ void main ()
if (tmpvar_95) {
if (!(tmpvar_93)) {
lowp vec4 tmpvar_96;
tmpvar_96 = texture2DLod (_MainTex, posN_8, 0.0);
tmpvar_96 = texture2DLodEXT (_MainTex, posN_8, 0.0);
highp vec4 rgba_97;
rgba_97 = tmpvar_96;
lumaEndN_6 = rgba_97.w;
};
if (!(tmpvar_94)) {
lowp vec4 tmpvar_98;
tmpvar_98 = texture2DLod (_MainTex, posP_7, 0.0);
tmpvar_98 = texture2DLodEXT (_MainTex, posP_7, 0.0);
highp vec4 rgba_99;
rgba_99 = tmpvar_98;
lumaEndP_5 = rgba_99.w;
@ -366,14 +366,14 @@ void main ()
if (tmpvar_102) {
if (!(tmpvar_100)) {
lowp vec4 tmpvar_103;
tmpvar_103 = texture2DLod (_MainTex, posN_8, 0.0);
tmpvar_103 = texture2DLodEXT (_MainTex, posN_8, 0.0);
highp vec4 rgba_104;
rgba_104 = tmpvar_103;
lumaEndN_6 = rgba_104.w;
};
if (!(tmpvar_101)) {
lowp vec4 tmpvar_105;
tmpvar_105 = texture2DLod (_MainTex, posP_7, 0.0);
tmpvar_105 = texture2DLodEXT (_MainTex, posP_7, 0.0);
highp vec4 rgba_106;
rgba_106 = tmpvar_105;
lumaEndP_5 = rgba_106.w;
@ -405,14 +405,14 @@ void main ()
if (tmpvar_109) {
if (!(tmpvar_107)) {
lowp vec4 tmpvar_110;
tmpvar_110 = texture2DLod (_MainTex, posN_8, 0.0);
tmpvar_110 = texture2DLodEXT (_MainTex, posN_8, 0.0);
highp vec4 rgba_111;
rgba_111 = tmpvar_110;
lumaEndN_6 = rgba_111.w;
};
if (!(tmpvar_108)) {
lowp vec4 tmpvar_112;
tmpvar_112 = texture2DLod (_MainTex, posP_7, 0.0);
tmpvar_112 = texture2DLodEXT (_MainTex, posP_7, 0.0);
highp vec4 rgba_113;
rgba_113 = tmpvar_112;
lumaEndP_5 = rgba_113.w;
@ -444,14 +444,14 @@ void main ()
if (tmpvar_116) {
if (!(tmpvar_114)) {
lowp vec4 tmpvar_117;
tmpvar_117 = texture2DLod (_MainTex, posN_8, 0.0);
tmpvar_117 = texture2DLodEXT (_MainTex, posN_8, 0.0);
highp vec4 rgba_118;
rgba_118 = tmpvar_117;
lumaEndN_6 = rgba_118.w;
};
if (!(tmpvar_115)) {
lowp vec4 tmpvar_119;
tmpvar_119 = texture2DLod (_MainTex, posP_7, 0.0);
tmpvar_119 = texture2DLodEXT (_MainTex, posP_7, 0.0);
highp vec4 rgba_120;
rgba_120 = tmpvar_119;
lumaEndP_5 = rgba_120.w;
@ -483,14 +483,14 @@ void main ()
if (tmpvar_123) {
if (!(tmpvar_121)) {
lowp vec4 tmpvar_124;
tmpvar_124 = texture2DLod (_MainTex, posN_8, 0.0);
tmpvar_124 = texture2DLodEXT (_MainTex, posN_8, 0.0);
highp vec4 rgba_125;
rgba_125 = tmpvar_124;
lumaEndN_6 = rgba_125.w;
};
if (!(tmpvar_122)) {
lowp vec4 tmpvar_126;
tmpvar_126 = texture2DLod (_MainTex, posP_7, 0.0);
tmpvar_126 = texture2DLodEXT (_MainTex, posP_7, 0.0);
highp vec4 rgba_127;
rgba_127 = tmpvar_126;
lumaEndP_5 = rgba_127.w;
@ -522,14 +522,14 @@ void main ()
if (tmpvar_130) {
if (!(tmpvar_128)) {
lowp vec4 tmpvar_131;
tmpvar_131 = texture2DLod (_MainTex, posN_8, 0.0);
tmpvar_131 = texture2DLodEXT (_MainTex, posN_8, 0.0);
highp vec4 rgba_132;
rgba_132 = tmpvar_131;
lumaEndN_6 = rgba_132.w;
};
if (!(tmpvar_129)) {
lowp vec4 tmpvar_133;
tmpvar_133 = texture2DLod (_MainTex, posP_7, 0.0);
tmpvar_133 = texture2DLodEXT (_MainTex, posP_7, 0.0);
highp vec4 rgba_134;
rgba_134 = tmpvar_133;
lumaEndP_5 = rgba_134.w;
@ -561,14 +561,14 @@ void main ()
if (tmpvar_137) {
if (!(tmpvar_135)) {
lowp vec4 tmpvar_138;
tmpvar_138 = texture2DLod (_MainTex, posN_8, 0.0);
tmpvar_138 = texture2DLodEXT (_MainTex, posN_8, 0.0);
highp vec4 rgba_139;
rgba_139 = tmpvar_138;
lumaEndN_6 = rgba_139.w;
};
if (!(tmpvar_136)) {
lowp vec4 tmpvar_140;
tmpvar_140 = texture2DLod (_MainTex, posP_7, 0.0);
tmpvar_140 = texture2DLodEXT (_MainTex, posP_7, 0.0);
highp vec4 rgba_141;
rgba_141 = tmpvar_140;
lumaEndP_5 = rgba_141.w;
@ -646,7 +646,7 @@ void main ()
posM_15.y = (xlv_TEXCOORD0.y + (tmpvar_152 * lengthSign_11));
};
lowp vec4 tmpvar_153;
tmpvar_153 = texture2DLod (_MainTex, posM_15, 0.0);
tmpvar_153 = texture2DLodEXT (_MainTex, posM_15, 0.0);
highp vec4 tmpvar_154;
tmpvar_154.xyz = tmpvar_153.xyz;
tmpvar_154.w = rgbyM_14.w;

View file

@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
@ -135,8 +135,11 @@
/* Begin PBXProject section */
08FB7793FE84155DC02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0460;
};
buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "glsl-optimizer-tests" */;
compatibilityVersion = "Xcode 3.1";
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
@ -203,7 +206,6 @@
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
INSTALL_PATH = /usr/local/bin;
@ -228,12 +230,12 @@
ARCHS = i386;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_VERSION = 4.0;
GCC_VERSION = "";
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
ONLY_ACTIVE_ARCH = YES;
PREBINDING = NO;
SDKROOT = macosx10.4;
SDKROOT = macosx;
};
name = Debug;
};
@ -242,15 +244,15 @@
buildSettings = {
ARCHS = i386;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_VERSION = 4.0;
GCC_VERSION = "";
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
GCC_WARN_PROTOTYPE_CONVERSION = YES;
GCC_WARN_SHADOW = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
SDKROOT = macosx10.4;
MACOSX_DEPLOYMENT_TARGET = 10.6;
SDKROOT = macosx;
};
name = Release;
};

View file

@ -156,6 +156,7 @@ static bool CheckGLSL (bool vertex, bool gles, const std::string& testName, cons
src += "#define highp\n";
src += "#define texture2DLodEXT texture2DLod\n";
src += "#define texture2DProjLodEXT texture2DProjLod\n";
src += "#define gl_FragDepthEXT gl_FragDepth\n";
src += "float shadow2DEXT (sampler2DShadow s, vec3 p) { return shadow2D(s,p).r; }\n";
src += "float shadow2DProjEXT (sampler2DShadow s, vec4 p) { return shadow2DProj(s,p).r; }\n";
}
@ -165,6 +166,8 @@ static bool CheckGLSL (bool vertex, bool gles, const std::string& testName, cons
replace_string (src, "GL_EXT_shader_texture_lod", "GL_ARB_shader_texture_lod", 0);
replace_string (src, "#extension GL_OES_standard_derivatives : require", "", 0);
replace_string (src, "#extension GL_EXT_shadow_samplers : require", "", 0);
replace_string (src, "#extension GL_EXT_frag_depth : require", "", 0);
replace_string (src, "precision ", "// precision ", 0);
}
const char* sourcePtr = src.c_str();

View file

@ -12,6 +12,9 @@
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
@ -91,6 +94,82 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="build/$(ProjectName)/$(PlatformName)/$(ConfigurationName)"
IntermediateDirectory="build/$(ProjectName)/$(PlatformName)/$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="talloc;../../../include;../../mesa;../../mapi;."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS"
MinimalRebuild="false"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="opengl32.lib"
LinkIncremental="2"
GenerateManifest="false"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
EmbedManifest="false"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="build/$(ProjectName)/$(ConfigurationName)"
@ -169,6 +248,85 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="build/$(ProjectName)/$(PlatformName)/$(ConfigurationName)"
IntermediateDirectory="build/$(ProjectName)/$(PlatformName)/$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
AdditionalIncludeDirectories="talloc;../../../include;../../mesa;../../mapi;."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="opengl32.lib"
LinkIncremental="1"
GenerateManifest="false"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
EmbedManifest="false"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>

Binary file not shown.