Updated glsl-optimizer.
This commit is contained in:
Родитель
24a1a76329
Коммит
687be4f31b
|
@ -23,7 +23,7 @@ GLSL Optimizer is licensed according to the terms of the MIT license.
|
||||||
Usage
|
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`
|
library are provided in `src/glsl/msvc/mesaglsl2.vcproj` and `src/glsl/xcode/mesaglsl2`
|
||||||
respectively.
|
respectively.
|
||||||
|
|
||||||
|
|
|
@ -2984,8 +2984,15 @@ ast_declarator_list::hir(exec_list *instructions,
|
||||||
* but otherwise we run into trouble if a function is prototyped, a
|
* but otherwise we run into trouble if a function is prototyped, a
|
||||||
* global var is decled, then the function is defined with usage of
|
* global var is decled, then the function is defined with usage of
|
||||||
* the global var. See glslparsertest's CorrectModule.frag.
|
* the global var. See glslparsertest's CorrectModule.frag.
|
||||||
|
* However, do not insert declarations before default precision statements.
|
||||||
*/
|
*/
|
||||||
instructions->push_head(var);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
instructions->append_list(&initializer_instructions);
|
instructions->append_list(&initializer_instructions);
|
||||||
|
@ -3943,7 +3950,22 @@ ast_type_specifier::hir(exec_list *instructions,
|
||||||
return NULL;
|
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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14474,6 +14474,25 @@ static const char *functions_for_EXT_shadow_samplers_frag [] = {
|
||||||
builtin_shadow2DEXT,
|
builtin_shadow2DEXT,
|
||||||
builtin_shadow2DProjEXT,
|
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[] =
|
static const char prototypes_for_EXT_texture_array_frag[] =
|
||||||
"(\n"
|
"(\n"
|
||||||
"(function texture1DArray\n"
|
"(function texture1DArray\n"
|
||||||
|
@ -14731,7 +14750,7 @@ static const char *functions_for_OES_texture_3D_vert [] = {
|
||||||
builtin_texture3DProj,
|
builtin_texture3DProj,
|
||||||
builtin_texture3DProjLod,
|
builtin_texture3DProjLod,
|
||||||
};
|
};
|
||||||
static gl_shader *builtin_profiles[27];
|
static gl_shader *builtin_profiles[28];
|
||||||
|
|
||||||
static void *builtin_mem_ctx = NULL;
|
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));
|
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,
|
_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,
|
prototypes_for_EXT_texture_array_frag,
|
||||||
functions_for_EXT_texture_array_frag,
|
functions_for_EXT_texture_array_frag,
|
||||||
Elements(functions_for_EXT_texture_array_frag));
|
Elements(functions_for_EXT_texture_array_frag));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state->target == vertex_shader && state->EXT_texture_array_enable) {
|
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,
|
prototypes_for_EXT_texture_array_vert,
|
||||||
functions_for_EXT_texture_array_vert,
|
functions_for_EXT_texture_array_vert,
|
||||||
Elements(functions_for_EXT_texture_array_vert));
|
Elements(functions_for_EXT_texture_array_vert));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state->OES_EGL_image_external_enable) {
|
if (state->OES_EGL_image_external_enable) {
|
||||||
_mesa_read_profile(state, 23,
|
_mesa_read_profile(state, 24,
|
||||||
prototypes_for_OES_EGL_image_external_glsl,
|
prototypes_for_OES_EGL_image_external_glsl,
|
||||||
functions_for_OES_EGL_image_external_glsl,
|
functions_for_OES_EGL_image_external_glsl,
|
||||||
Elements(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) {
|
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,
|
prototypes_for_OES_standard_derivatives_frag,
|
||||||
functions_for_OES_standard_derivatives_frag,
|
functions_for_OES_standard_derivatives_frag,
|
||||||
Elements(functions_for_OES_standard_derivatives_frag));
|
Elements(functions_for_OES_standard_derivatives_frag));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state->target == fragment_shader && state->OES_texture_3D_enable) {
|
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,
|
prototypes_for_OES_texture_3D_frag,
|
||||||
functions_for_OES_texture_3D_frag,
|
functions_for_OES_texture_3D_frag,
|
||||||
Elements(functions_for_OES_texture_3D_frag));
|
Elements(functions_for_OES_texture_3D_frag));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state->target == vertex_shader && state->OES_texture_3D_enable) {
|
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,
|
prototypes_for_OES_texture_3D_vert,
|
||||||
functions_for_OES_texture_3D_vert,
|
functions_for_OES_texture_3D_vert,
|
||||||
Elements(functions_for_OES_texture_3D_vert));
|
Elements(functions_for_OES_texture_3D_vert));
|
||||||
|
|
|
@ -812,6 +812,11 @@ generate_100ES_fs_variables(exec_list *instructions,
|
||||||
add_builtin_variable(instructions, state->symbols,
|
add_builtin_variable(instructions, state->symbols,
|
||||||
& builtin_100ES_fs_variables[i], state->es_shader);
|
& 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_100ES_uniforms(instructions, state);
|
||||||
|
|
||||||
|
|
2
3rdparty/glsl-optimizer/src/glsl/builtins/profiles/EXT_shadow_samplers.vert
поставляемый
Normal file
2
3rdparty/glsl-optimizer/src/glsl/builtins/profiles/EXT_shadow_samplers.vert
поставляемый
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
float shadow2DEXT (sampler2DShadow sampler, vec3 coord);
|
||||||
|
float shadow2DProjEXT (sampler2DShadow sampler, vec4 coord);
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -31,6 +31,7 @@ initialize_mesa_context(struct gl_context *ctx, gl_api api)
|
||||||
{
|
{
|
||||||
ctx->Extensions.OES_standard_derivatives = GL_TRUE;
|
ctx->Extensions.OES_standard_derivatives = GL_TRUE;
|
||||||
ctx->Extensions.EXT_shadow_samplers = GL_TRUE;
|
ctx->Extensions.EXT_shadow_samplers = GL_TRUE;
|
||||||
|
ctx->Extensions.EXT_frag_depth = GL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->Const.GLSLVersion = 140;
|
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);
|
printf("**** %s:\n", name);
|
||||||
//_mesa_print_ir (ir, state);
|
//_mesa_print_ir (ir, state);
|
||||||
char* foobar = _mesa_print_ir_glsl(ir, state, ralloc_strdup(memctx, ""), kPrintGlslFragment);
|
char* foobar = _mesa_print_ir_glsl(ir, state, ralloc_strdup(memctx, ""), kPrintGlslFragment);
|
||||||
printf(foobar);
|
printf("%s\n", foobar);
|
||||||
validate_ir_tree(ir);
|
validate_ir_tree(ir);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -363,13 +364,15 @@ 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);
|
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;
|
shader->shader->num_builtins_to_link = state->num_builtins_to_link;
|
||||||
|
|
||||||
|
struct gl_shader* linked_shader = 0;
|
||||||
|
|
||||||
if (!state->error && !ir->is_empty())
|
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,
|
&ctx->mesa_ctx,
|
||||||
shader->whole_program,
|
shader->whole_program,
|
||||||
shader->whole_program->Shaders,
|
shader->whole_program->Shaders,
|
||||||
shader->whole_program->NumShaders);
|
shader->whole_program->NumShaders);
|
||||||
if (!linked_shader)
|
if (!linked_shader)
|
||||||
{
|
{
|
||||||
shader->status = false;
|
shader->status = false;
|
||||||
|
@ -401,6 +404,9 @@ glslopt_shader* glslopt_optimize (glslopt_ctx* ctx, glslopt_shader_type type, co
|
||||||
ralloc_free (ir);
|
ralloc_free (ir);
|
||||||
ralloc_free (state);
|
ralloc_free (state);
|
||||||
|
|
||||||
|
if (linked_shader)
|
||||||
|
ralloc_free(linked_shader);
|
||||||
|
|
||||||
return shader;
|
return shader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -280,8 +280,9 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
|
||||||
EXT(OES_EGL_image_external, true, false, true, false, true, OES_EGL_image_external),
|
EXT(OES_EGL_image_external, true, false, true, false, true, OES_EGL_image_external),
|
||||||
EXT(ARB_shader_bit_encoding, true, true, true, true, false, ARB_shader_bit_encoding),
|
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(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(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
|
#undef EXT
|
||||||
|
|
|
@ -191,6 +191,8 @@ struct _mesa_glsl_parse_state {
|
||||||
bool EXT_shader_texture_lod_warn;
|
bool EXT_shader_texture_lod_warn;
|
||||||
bool EXT_shadow_samplers_enable;
|
bool EXT_shadow_samplers_enable;
|
||||||
bool EXT_shadow_samplers_warn;
|
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_enable;
|
||||||
bool ARB_shader_stencil_export_warn;
|
bool ARB_shader_stencil_export_warn;
|
||||||
bool AMD_conservative_depth_enable;
|
bool AMD_conservative_depth_enable;
|
||||||
|
|
|
@ -80,6 +80,7 @@ enum ir_node_type {
|
||||||
ir_type_return,
|
ir_type_return,
|
||||||
ir_type_swizzle,
|
ir_type_swizzle,
|
||||||
ir_type_texture,
|
ir_type_texture,
|
||||||
|
ir_type_precision,
|
||||||
ir_type_max /**< maximum ir_type enum number, for validation */
|
ir_type_max /**< maximum ir_type enum number, for validation */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1813,6 +1814,32 @@ private:
|
||||||
ir_constant(void);
|
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;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -155,7 +155,14 @@ ir_loop::clone(void *mem_ctx, struct hash_table *ht) const
|
||||||
new_loop->to = this->to->clone(mem_ctx, ht);
|
new_loop->to = this->to->clone(mem_ctx, ht);
|
||||||
if (this->increment)
|
if (this->increment)
|
||||||
new_loop->increment = this->increment->clone(mem_ctx, ht);
|
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) {
|
foreach_iter(exec_list_iterator, iter, this->body_instructions) {
|
||||||
ir_instruction *ir = (ir_instruction *)iter.get();
|
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 {
|
class fixup_ir_call_visitor : public ir_hierarchical_visitor {
|
||||||
public:
|
public:
|
||||||
fixup_ir_call_visitor(struct hash_table *ht)
|
fixup_ir_call_visitor(struct hash_table *ht)
|
||||||
|
|
|
@ -68,6 +68,15 @@ ir_hierarchical_visitor::visit(ir_loop_jump *ir)
|
||||||
return visit_continue;
|
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_visitor_status
|
||||||
ir_hierarchical_visitor::visit(ir_dereference_variable *ir)
|
ir_hierarchical_visitor::visit(ir_dereference_variable *ir)
|
||||||
{
|
{
|
||||||
|
|
|
@ -86,6 +86,7 @@ public:
|
||||||
virtual ir_visitor_status visit(class ir_variable *);
|
virtual ir_visitor_status visit(class ir_variable *);
|
||||||
virtual ir_visitor_status visit(class ir_constant *);
|
virtual ir_visitor_status visit(class ir_constant *);
|
||||||
virtual ir_visitor_status visit(class ir_loop_jump *);
|
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
|
* ir_dereference_variable isn't technically a leaf, but it is treated as a
|
||||||
|
|
|
@ -397,3 +397,9 @@ ir_if::accept(ir_hierarchical_visitor *v)
|
||||||
|
|
||||||
return v->visit_leave(this);
|
return v->visit_leave(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ir_visitor_status
|
||||||
|
ir_precision_statement::accept(ir_hierarchical_visitor *v)
|
||||||
|
{
|
||||||
|
return v->visit(this);
|
||||||
|
}
|
||||||
|
|
|
@ -113,7 +113,8 @@ public:
|
||||||
virtual void visit(ir_if *);
|
virtual void visit(ir_if *);
|
||||||
virtual void visit(ir_loop *);
|
virtual void visit(ir_loop *);
|
||||||
virtual void visit(ir_loop_jump *);
|
virtual void visit(ir_loop_jump *);
|
||||||
|
virtual void visit(ir_precision_statement *);
|
||||||
|
|
||||||
int indentation;
|
int indentation;
|
||||||
char* buffer;
|
char* buffer;
|
||||||
global_print_tracker* globals;
|
global_print_tracker* globals;
|
||||||
|
@ -139,6 +140,8 @@ _mesa_print_ir_glsl(exec_list *instructions,
|
||||||
ralloc_strcat (&buffer, "#extension GL_OES_standard_derivatives : enable\n");
|
ralloc_strcat (&buffer, "#extension GL_OES_standard_derivatives : enable\n");
|
||||||
if (state->EXT_shadow_samplers_enable)
|
if (state->EXT_shadow_samplers_enable)
|
||||||
ralloc_strcat (&buffer, "#extension GL_EXT_shadow_samplers : enable\n");
|
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) {
|
if (state) {
|
||||||
ir_struct_usage_visitor v;
|
ir_struct_usage_visitor v;
|
||||||
|
@ -173,7 +176,8 @@ _mesa_print_ir_glsl(exec_list *instructions,
|
||||||
ir_instruction *ir = (ir_instruction *)iter.get();
|
ir_instruction *ir = (ir_instruction *)iter.get();
|
||||||
if (ir->ir_type == ir_type_variable) {
|
if (ir->ir_type == ir_type_variable) {
|
||||||
ir_variable *var = static_cast<ir_variable*>(ir);
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,9 +223,23 @@ void ir_print_glsl_visitor::print_precision (ir_instruction* ir, const glsl_type
|
||||||
{
|
{
|
||||||
if (!this->use_precision)
|
if (!this->use_precision)
|
||||||
return;
|
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;
|
return;
|
||||||
|
}
|
||||||
glsl_precision prec = precision_from_ir(ir);
|
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 (prec == glsl_precision_high || prec == glsl_precision_undefined)
|
||||||
{
|
{
|
||||||
if (ir->ir_type == ir_type_function_signature)
|
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",
|
ralloc_asprintf_append (&buffer, "%s%s%s%s",
|
||||||
cent, inv, interp[ir->interpolation], mode[decormode][ir->mode]);
|
cent, inv, interp[ir->interpolation], mode[decormode][ir->mode]);
|
||||||
print_precision (ir, ir->type);
|
print_precision (ir, ir->type);
|
||||||
|
@ -582,19 +607,30 @@ void ir_print_glsl_visitor::visit(ir_texture *ir)
|
||||||
sampler_uv_dim = 3;
|
sampler_uv_dim = 3;
|
||||||
const bool is_proj = (uv_dim > sampler_uv_dim);
|
const bool is_proj = (uv_dim > sampler_uv_dim);
|
||||||
|
|
||||||
// texture function name
|
// texture function name
|
||||||
ralloc_asprintf_append (&buffer, "%s", is_shadow ? "shadow" : "texture");
|
//ACS: shadow lookups and lookups with dimensionality included in the name were deprecated in 130
|
||||||
ralloc_asprintf_append (&buffer, "%s", tex_sampler_dim_name[sampler_dim]);
|
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)
|
if (is_proj)
|
||||||
ralloc_asprintf_append (&buffer, "Proj");
|
ralloc_asprintf_append (&buffer, "Proj");
|
||||||
if (ir->op == ir_txl)
|
if (ir->op == ir_txl)
|
||||||
ralloc_asprintf_append (&buffer, "Lod");
|
ralloc_asprintf_append (&buffer, "Lod");
|
||||||
|
|
||||||
if (is_shadow)
|
if (state->es_shader)
|
||||||
{
|
{
|
||||||
if (state->EXT_shadow_samplers_enable && state->es_shader)
|
if ( (is_shadow && state->EXT_shadow_samplers_enable) ||
|
||||||
|
(ir->op == ir_txl && state->EXT_shader_texture_lod_enable) )
|
||||||
|
{
|
||||||
ralloc_asprintf_append (&buffer, "EXT");
|
ralloc_asprintf_append (&buffer, "EXT");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ralloc_asprintf_append (&buffer, " (");
|
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");
|
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);
|
||||||
|
}
|
||||||
|
|
|
@ -514,3 +514,9 @@ ir_print_visitor::visit(ir_loop_jump *ir)
|
||||||
{
|
{
|
||||||
printf("%s", ir->is_break() ? "break" : "continue");
|
printf("%s", ir->is_break() ? "break" : "continue");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ir_print_visitor::visit(ir_precision_statement *ir)
|
||||||
|
{
|
||||||
|
printf("%s", ir->precision_statement);
|
||||||
|
}
|
||||||
|
|
|
@ -72,6 +72,7 @@ public:
|
||||||
virtual void visit(ir_if *);
|
virtual void visit(ir_if *);
|
||||||
virtual void visit(ir_loop *);
|
virtual void visit(ir_loop *);
|
||||||
virtual void visit(ir_loop_jump *);
|
virtual void visit(ir_loop_jump *);
|
||||||
|
virtual void visit(ir_precision_statement *);
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
|
|
@ -62,6 +62,7 @@ public:
|
||||||
virtual void visit(class ir_if *) = 0;
|
virtual void visit(class ir_if *) = 0;
|
||||||
virtual void visit(class ir_loop *) = 0;
|
virtual void visit(class ir_loop *) = 0;
|
||||||
virtual void visit(class ir_loop_jump *) = 0;
|
virtual void visit(class ir_loop_jump *) = 0;
|
||||||
|
virtual void visit(class ir_precision_statement *) = 0;
|
||||||
/*@}*/
|
/*@}*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -875,6 +875,9 @@ move_non_declarations(exec_list *instructions, exec_node *last,
|
||||||
|
|
||||||
if (inst->as_function())
|
if (inst->as_function())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (inst->ir_type == ir_type_precision)
|
||||||
|
continue;
|
||||||
|
|
||||||
ir_variable *var = inst->as_variable();
|
ir_variable *var = inst->as_variable();
|
||||||
if ((var != NULL) && (var->mode != ir_var_temporary))
|
if ((var != NULL) && (var->mode != ir_var_temporary))
|
||||||
|
@ -1071,8 +1074,8 @@ link_intrastage_shaders(void *mem_ctx,
|
||||||
*/
|
*/
|
||||||
ir_function_signature *const main_sig = get_main_function_signature(linked);
|
ir_function_signature *const main_sig = get_main_function_signature(linked);
|
||||||
|
|
||||||
/* Move any instructions other than variable declarations or function
|
/* Move any instructions other than variable declarations, function
|
||||||
* declarations into main.
|
* declarations or precision statements into main.
|
||||||
*/
|
*/
|
||||||
exec_node *insertion_point =
|
exec_node *insertion_point =
|
||||||
move_non_declarations(linked->ir, (exec_node *) &main_sig->body, false,
|
move_non_declarations(linked->ir, (exec_node *) &main_sig->body, false,
|
||||||
|
|
|
@ -440,6 +440,11 @@ struct ir_lower_jumps_visitor : public ir_control_flow_visitor {
|
||||||
*/
|
*/
|
||||||
(void) ir;
|
(void) ir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void visit(class ir_precision_statement * ir)
|
||||||
|
{
|
||||||
|
/* Nothing needs to be done. */
|
||||||
|
}
|
||||||
|
|
||||||
enum jump_strength get_jump_strength(ir_instruction* ir)
|
enum jump_strength get_jump_strength(ir_instruction* 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_sub_return = lower_sub_return;
|
||||||
v.lower_main_return = lower_main_return;
|
v.lower_main_return = lower_main_return;
|
||||||
|
|
||||||
|
bool progress_ever = false;
|
||||||
do {
|
do {
|
||||||
v.progress = false;
|
v.progress = false;
|
||||||
visit_exec_list(instructions, &v);
|
visit_exec_list(instructions, &v);
|
||||||
|
progress_ever = v.progress || progress_ever;
|
||||||
} while (v.progress);
|
} while (v.progress);
|
||||||
|
|
||||||
return v.progress;
|
return progress_ever;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,17 +11,27 @@ EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Win32 = Debug|Win32
|
Debug|Win32 = Debug|Win32
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
Release|Win32 = Release|Win32
|
Release|Win32 = Release|Win32
|
||||||
|
Release|x64 = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{B475A403-9D9B-410D-8A93-BA49FC4DD811}.Debug|Win32.ActiveCfg = Debug|Win32
|
{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|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.ActiveCfg = Release|Win32
|
||||||
{B475A403-9D9B-410D-8A93-BA49FC4DD811}.Release|Win32.Build.0 = 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.ActiveCfg = Debug|Win32
|
||||||
{BB382242-6EBB-445F-989C-B9BA61D17965}.Debug|Win32.Build.0 = 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.ActiveCfg = Release|Win32
|
||||||
{BB382242-6EBB-445F-989C-B9BA61D17965}.Release|Win32.Build.0 = 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
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
@ -12,14 +12,17 @@
|
||||||
<Platform
|
<Platform
|
||||||
Name="Win32"
|
Name="Win32"
|
||||||
/>
|
/>
|
||||||
|
<Platform
|
||||||
|
Name="x64"
|
||||||
|
/>
|
||||||
</Platforms>
|
</Platforms>
|
||||||
<ToolFiles>
|
<ToolFiles>
|
||||||
</ToolFiles>
|
</ToolFiles>
|
||||||
<Configurations>
|
<Configurations>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
OutputDirectory="build/$(ProjectName)/$(ConfigurationName)"
|
OutputDirectory="build/$(ProjectName)\$(ConfigurationName)"
|
||||||
IntermediateDirectory="build/$(ProjectName)/$(ConfigurationName)"
|
IntermediateDirectory="build/$(ProjectName)\$(ConfigurationName)"
|
||||||
ConfigurationType="4"
|
ConfigurationType="4"
|
||||||
CharacterSet="1"
|
CharacterSet="1"
|
||||||
>
|
>
|
||||||
|
@ -81,10 +84,76 @@
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</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
|
<Configuration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
OutputDirectory="build/$(ProjectName)/$(ConfigurationName)"
|
OutputDirectory="build/$(PlatformName)\$(ConfigurationName)"
|
||||||
IntermediateDirectory="build/$(ProjectName)/$(ConfigurationName)"
|
IntermediateDirectory="build/$(PlatformName)\$(ConfigurationName)"
|
||||||
ConfigurationType="4"
|
ConfigurationType="4"
|
||||||
CharacterSet="1"
|
CharacterSet="1"
|
||||||
WholeProgramOptimization="0"
|
WholeProgramOptimization="0"
|
||||||
|
@ -147,6 +216,73 @@
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</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>
|
</Configurations>
|
||||||
<References>
|
<References>
|
||||||
</References>
|
</References>
|
||||||
|
@ -208,6 +344,14 @@
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
|
@ -216,6 +360,14 @@
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\glsl_optimizer.cpp"
|
RelativePath="..\glsl_optimizer.cpp"
|
||||||
|
@ -244,6 +396,14 @@
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
|
@ -252,6 +412,14 @@
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\glsl_parser_extras.cpp"
|
RelativePath="..\glsl_parser_extras.cpp"
|
||||||
|
@ -504,6 +672,14 @@
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
|
@ -512,6 +688,14 @@
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\opt_algebraic.cpp"
|
RelativePath="..\opt_algebraic.cpp"
|
||||||
|
@ -635,6 +819,14 @@
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
|
@ -643,6 +835,14 @@
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\glcpp\glcpp-parse.c"
|
RelativePath="..\glcpp\glcpp-parse.c"
|
||||||
|
@ -663,6 +863,14 @@
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
|
@ -671,6 +879,14 @@
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\glcpp\glcpp.c"
|
RelativePath="..\glcpp\glcpp.c"
|
||||||
|
@ -683,6 +899,14 @@
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
|
@ -691,6 +915,14 @@
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\glcpp\glcpp.h"
|
RelativePath="..\glcpp\glcpp.h"
|
||||||
|
|
|
@ -53,6 +53,7 @@ public:
|
||||||
virtual ir_visitor_status visit(ir_variable *);
|
virtual ir_visitor_status visit(ir_variable *);
|
||||||
virtual ir_visitor_status visit_enter(ir_assignment *);
|
virtual ir_visitor_status visit_enter(ir_assignment *);
|
||||||
virtual ir_visitor_status visit_enter(ir_call *);
|
virtual ir_visitor_status visit_enter(ir_call *);
|
||||||
|
virtual ir_visitor_status visit_enter(ir_function_signature *);
|
||||||
|
|
||||||
exec_list list;
|
exec_list list;
|
||||||
};
|
};
|
||||||
|
@ -162,6 +163,23 @@ ir_constant_variable_visitor::visit_enter(ir_call *ir)
|
||||||
return visit_continue;
|
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.
|
* Does a copy propagation pass on the code present in the instruction stream.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
archiveVersion = 1;
|
archiveVersion = 1;
|
||||||
classes = {
|
classes = {
|
||||||
};
|
};
|
||||||
objectVersion = 45;
|
objectVersion = 46;
|
||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* 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; };
|
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; };
|
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; };
|
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; };
|
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; };
|
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; };
|
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 */,
|
2B6A99EE1223B1670059FBED /* glcpp-parse.c */,
|
||||||
2B6A99EF1223B1670059FBED /* glcpp-parse.h */,
|
2B6A99EF1223B1670059FBED /* glcpp-parse.h */,
|
||||||
2B6A99F01223B1670059FBED /* glcpp-parse.y */,
|
2B6A99F01223B1670059FBED /* glcpp-parse.y */,
|
||||||
2B6A99F11223B1670059FBED /* glcpp.c */,
|
|
||||||
2B6A99F21223B1670059FBED /* glcpp.h */,
|
2B6A99F21223B1670059FBED /* glcpp.h */,
|
||||||
2B6A99F31223B1670059FBED /* pp.c */,
|
2B6A99F31223B1670059FBED /* pp.c */,
|
||||||
);
|
);
|
||||||
|
@ -663,8 +661,11 @@
|
||||||
/* Begin PBXProject section */
|
/* Begin PBXProject section */
|
||||||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
LastUpgradeCheck = 0460;
|
||||||
|
};
|
||||||
buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "mesaglsl2" */;
|
buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "mesaglsl2" */;
|
||||||
compatibilityVersion = "Xcode 3.1";
|
compatibilityVersion = "Xcode 3.2";
|
||||||
developmentRegion = English;
|
developmentRegion = English;
|
||||||
hasScannedForEncodings = 1;
|
hasScannedForEncodings = 1;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
|
@ -879,9 +880,9 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
INSTALL_PATH = /usr/local/lib;
|
INSTALL_PATH = /usr/local/lib;
|
||||||
|
@ -893,6 +894,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
INSTALL_PATH = /usr/local/lib;
|
INSTALL_PATH = /usr/local/lib;
|
||||||
|
@ -906,7 +908,7 @@
|
||||||
ARCHS = i386;
|
ARCHS = i386;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
GCC_VERSION = 4.0;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
@ -915,9 +917,9 @@
|
||||||
../../../include,
|
../../../include,
|
||||||
../../mesa,
|
../../mesa,
|
||||||
);
|
);
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
PREBINDING = NO;
|
SDKROOT = macosx;
|
||||||
SDKROOT = macosx10.4;
|
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
|
@ -926,7 +928,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ARCHS = i386;
|
ARCHS = i386;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_VERSION = 4.0;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
HEADER_SEARCH_PATHS = (
|
HEADER_SEARCH_PATHS = (
|
||||||
|
@ -934,8 +936,8 @@
|
||||||
../../../include,
|
../../../include,
|
||||||
../../mesa,
|
../../mesa,
|
||||||
);
|
);
|
||||||
PREBINDING = NO;
|
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||||
SDKROOT = macosx10.4;
|
SDKROOT = macosx;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
@ -946,11 +948,9 @@
|
||||||
CONFIGURATION_BUILD_DIR = ..;
|
CONFIGURATION_BUILD_DIR = ..;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
PREBINDING = NO;
|
|
||||||
PRODUCT_NAME = builtin_compiler;
|
PRODUCT_NAME = builtin_compiler;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
|
@ -962,10 +962,8 @@
|
||||||
CONFIGURATION_BUILD_DIR = ..;
|
CONFIGURATION_BUILD_DIR = ..;
|
||||||
COPY_PHASE_STRIP = YES;
|
COPY_PHASE_STRIP = YES;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
PREBINDING = NO;
|
|
||||||
PRODUCT_NAME = builtin_compiler;
|
PRODUCT_NAME = builtin_compiler;
|
||||||
ZERO_LINK = NO;
|
ZERO_LINK = NO;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1145,6 +1145,7 @@ struct gl_extensions
|
||||||
GLboolean EXT_vertex_array_bgra;
|
GLboolean EXT_vertex_array_bgra;
|
||||||
GLboolean OES_standard_derivatives;
|
GLboolean OES_standard_derivatives;
|
||||||
GLboolean EXT_shadow_samplers;
|
GLboolean EXT_shadow_samplers;
|
||||||
|
GLboolean EXT_frag_depth;
|
||||||
/* vendor extensions */
|
/* vendor extensions */
|
||||||
GLboolean AMD_seamless_cubemap_per_texture;
|
GLboolean AMD_seamless_cubemap_per_texture;
|
||||||
GLboolean APPLE_packed_pixels;
|
GLboolean APPLE_packed_pixels;
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
void main ()
|
||||||
|
{
|
||||||
|
gl_FragData[0] = vec4(0.5, 0.5, 0.5, 0.5);
|
||||||
|
gl_FragDepth = 0.9;
|
||||||
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
varying mediump vec2 var_mediump;
|
varying mediump vec2 var_mediump;
|
||||||
varying lowp vec2 var_lowp;
|
varying lowp vec2 var_lowp;
|
||||||
uniform sampler2D tex_highp;
|
uniform highp sampler2D tex_highp;
|
||||||
uniform sampler2D tex_lowp;
|
uniform sampler2D tex_lowp;
|
||||||
uniform sampler2D tex_def;
|
uniform sampler2D tex_def;
|
||||||
void main ()
|
void main ()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
varying mediump vec2 var_mediump;
|
varying mediump vec2 var_mediump;
|
||||||
varying lowp vec2 var_lowp;
|
varying lowp vec2 var_lowp;
|
||||||
uniform sampler2D tex_highp;
|
uniform highp sampler2D tex_highp;
|
||||||
uniform sampler2D tex_lowp;
|
uniform sampler2D tex_lowp;
|
||||||
uniform sampler2D tex_def;
|
uniform sampler2D tex_def;
|
||||||
void main ()
|
void main ()
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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) {
|
vec4 xll_tex2Dlod(sampler2D s, vec4 coord) {
|
||||||
return texture2DLod( s, coord.xy, coord.w);
|
return texture2DLodEXT( s, coord.xy, coord.w);
|
||||||
}
|
}
|
||||||
uniform sampler2D tex;
|
uniform sampler2D tex;
|
||||||
mediump vec4 xlat_main( in highp vec4 uv );
|
mediump vec4 xlat_main( in highp vec4 uv );
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#extension GL_ARB_shader_texture_lod : enable
|
#extension GL_EXT_shader_texture_lod : enable
|
||||||
varying highp vec4 xlv_TEXCOORD0;
|
varying highp vec4 xlv_TEXCOORD0;
|
||||||
uniform sampler2D tex;
|
uniform sampler2D tex;
|
||||||
vec4 xll_tex2Dlod (
|
vec4 xll_tex2Dlod (
|
||||||
|
@ -7,7 +7,7 @@ vec4 xll_tex2Dlod (
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
lowp vec4 tmpvar_3;
|
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;
|
return tmpvar_3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
#extension GL_ARB_shader_texture_lod : enable
|
#extension GL_EXT_shader_texture_lod : enable
|
||||||
varying highp vec4 xlv_TEXCOORD0;
|
varying highp vec4 xlv_TEXCOORD0;
|
||||||
uniform sampler2D tex;
|
uniform sampler2D tex;
|
||||||
void main ()
|
void main ()
|
||||||
{
|
{
|
||||||
mediump vec4 tmpvar_1;
|
mediump vec4 tmpvar_1;
|
||||||
lowp vec4 tmpvar_2;
|
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;
|
tmpvar_1 = tmpvar_2;
|
||||||
gl_FragData[0] = tmpvar_1;
|
gl_FragData[0] = tmpvar_1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ uniform sampler2D tex;
|
||||||
void main ()
|
void main ()
|
||||||
{
|
{
|
||||||
lowp vec4 tmpvar_1;
|
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;
|
gl_FragColor = tmpvar_1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,169 +12,127 @@ vec3 FxaaFilterReturn( in vec3 rgb );
|
||||||
vec3 FxaaPixelShader( in vec2 pos, in sampler2D tex, in vec2 rcpFrame );
|
vec3 FxaaPixelShader( in vec2 pos, in sampler2D tex, in vec2 rcpFrame );
|
||||||
vec4 xlat_main( in vec2 uv );
|
vec4 xlat_main( in vec2 uv );
|
||||||
vec4 FxaaTexOff( in sampler2D tex, in vec2 pos, in vec2 off, in vec2 rcpFrame ) {
|
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 ) {
|
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 ) {
|
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 ) {
|
vec3 FxaaLerp3( in vec3 a, in vec3 b, in float amountOfA ) {
|
||||||
return ((vec3( ( -amountOfA ), ( -amountOfA ), ( -amountOfA )) * b) + ((a * vec3( amountOfA, amountOfA, amountOfA)) + b));
|
return ((vec3( (-amountOfA), (-amountOfA), (-amountOfA)) * b) + ((a * vec3( amountOfA, amountOfA, amountOfA)) + b));
|
||||||
}
|
}
|
||||||
vec3 FxaaFilterReturn( in vec3 rgb ) {
|
vec3 FxaaFilterReturn( in vec3 rgb ) {
|
||||||
return rgb;
|
return rgb;
|
||||||
}
|
}
|
||||||
vec3 FxaaPixelShader( in vec2 pos, in sampler2D tex, in vec2 rcpFrame ) {
|
vec3 FxaaPixelShader( in vec2 pos, in sampler2D tex, in vec2 rcpFrame ) {
|
||||||
vec3 rgbN;
|
vec3 rgbN = FxaaTexOff( tex, pos.xy, vec2( 0.0, -1.0), rcpFrame).xyz;
|
||||||
vec3 rgbW;
|
vec3 rgbW = FxaaTexOff( tex, pos.xy, vec2( -1.0, 0.0), rcpFrame).xyz;
|
||||||
vec3 rgbM;
|
vec3 rgbM = FxaaTexOff( tex, pos.xy, vec2( 0.0, 0.0), rcpFrame).xyz;
|
||||||
vec3 rgbE;
|
vec3 rgbE = FxaaTexOff( tex, pos.xy, vec2( 1.0, 0.0), rcpFrame).xyz;
|
||||||
vec3 rgbS;
|
vec3 rgbS = FxaaTexOff( tex, pos.xy, vec2( 0.0, 1.0), rcpFrame).xyz;
|
||||||
float lumaN;
|
float lumaN = FxaaLuma( rgbN);
|
||||||
float lumaW;
|
float lumaW = FxaaLuma( rgbW);
|
||||||
float lumaM;
|
float lumaM = FxaaLuma( rgbM);
|
||||||
float lumaE;
|
float lumaE = FxaaLuma( rgbE);
|
||||||
float lumaS;
|
float lumaS = FxaaLuma( rgbS);
|
||||||
float rangeMin;
|
float rangeMin = min( lumaM, min( min( lumaN, lumaW), min( lumaS, lumaE)));
|
||||||
float rangeMax;
|
float rangeMax = max( lumaM, max( max( lumaN, lumaW), max( lumaS, lumaE)));
|
||||||
float range;
|
float range = (rangeMax - rangeMin);
|
||||||
vec3 rgbL;
|
if ((range < max( (1.0 / 24.0), (rangeMax * (1.0 / 8.0))))){
|
||||||
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))) ){
|
|
||||||
return FxaaFilterReturn( rgbM);
|
return FxaaFilterReturn( rgbM);
|
||||||
}
|
}
|
||||||
rgbL = ((((rgbN + rgbW) + rgbM) + rgbE) + rgbS);
|
vec3 rgbL = ((((rgbN + rgbW) + rgbM) + rgbE) + rgbS);
|
||||||
lumaL = ((((lumaN + lumaW) + lumaE) + lumaS) * 0.250000);
|
float lumaL = ((((lumaN + lumaW) + lumaE) + lumaS) * 0.25);
|
||||||
rangeL = abs( (lumaL - lumaM) );
|
float rangeL = abs((lumaL - lumaM));
|
||||||
blendL = (max( 0.00000, ((rangeL / range) - 0.250000)) * 1.33333);
|
float blendL = (max( 0.0, ((rangeL / range) - (1.0 / 4.0))) * (1.0 / (1.0 - (1.0 / 4.0))));
|
||||||
blendL = min( 0.750000, blendL);
|
blendL = min( (3.0 / 4.0), blendL);
|
||||||
rgbNW = FxaaTexOff( tex, pos.xy , vec2( -1.00000, -1.00000), rcpFrame).xyz ;
|
vec3 rgbNW = FxaaTexOff( tex, pos.xy, vec2( -1.0, -1.0), rcpFrame).xyz;
|
||||||
rgbNE = FxaaTexOff( tex, pos.xy , vec2( 1.00000, -1.00000), rcpFrame).xyz ;
|
vec3 rgbNE = FxaaTexOff( tex, pos.xy, vec2( 1.0, -1.0), rcpFrame).xyz;
|
||||||
rgbSW = FxaaTexOff( tex, pos.xy , vec2( -1.00000, 1.00000), rcpFrame).xyz ;
|
vec3 rgbSW = FxaaTexOff( tex, pos.xy, vec2( -1.0, 1.0), rcpFrame).xyz;
|
||||||
rgbSE = FxaaTexOff( tex, pos.xy , vec2( 1.00000, 1.00000), rcpFrame).xyz ;
|
vec3 rgbSE = FxaaTexOff( tex, pos.xy, vec2( 1.0, 1.0), rcpFrame).xyz;
|
||||||
rgbL += (((rgbNW + rgbNE) + rgbSW) + rgbSE);
|
rgbL += (((rgbNW + rgbNE) + rgbSW) + rgbSE);
|
||||||
rgbL *= vec3( 0.111111, 0.111111, 0.111111);
|
rgbL *= vec3( (1.0 / 9.0), (1.0 / 9.0), (1.0 / 9.0));
|
||||||
lumaNW = FxaaLuma( rgbNW);
|
float lumaNW = FxaaLuma( rgbNW);
|
||||||
lumaNE = FxaaLuma( rgbNE);
|
float lumaNE = FxaaLuma( rgbNE);
|
||||||
lumaSW = FxaaLuma( rgbSW);
|
float lumaSW = FxaaLuma( rgbSW);
|
||||||
lumaSE = FxaaLuma( rgbSE);
|
float 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)) ));
|
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))));
|
||||||
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)) ));
|
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))));
|
||||||
horzSpan = (edgeHorz >= edgeVert);
|
bool horzSpan = (edgeHorz >= edgeVert);
|
||||||
lengthSign = (( horzSpan ) ? ( ( -rcpFrame.y ) ) : ( ( -rcpFrame.x ) ));
|
float lengthSign = (( horzSpan ) ? ( (-rcpFrame.y) ) : ( (-rcpFrame.x) ));
|
||||||
if ( ( !horzSpan ) ){
|
if ((!horzSpan)){
|
||||||
lumaN = lumaW;
|
lumaN = lumaW;
|
||||||
}
|
}
|
||||||
if ( ( !horzSpan ) ){
|
if ((!horzSpan)){
|
||||||
lumaS = lumaE;
|
lumaS = lumaE;
|
||||||
}
|
}
|
||||||
gradientN = abs( (lumaN - lumaM) );
|
float gradientN = abs((lumaN - lumaM));
|
||||||
gradientS = abs( (lumaS - lumaM) );
|
float gradientS = abs((lumaS - lumaM));
|
||||||
lumaN = ((lumaN + lumaM) * 0.500000);
|
lumaN = ((lumaN + lumaM) * 0.5);
|
||||||
lumaS = ((lumaS + lumaM) * 0.500000);
|
lumaS = ((lumaS + lumaM) * 0.5);
|
||||||
pairN = (gradientN >= gradientS);
|
bool pairN = (gradientN >= gradientS);
|
||||||
if ( ( !pairN ) ){
|
if ((!pairN)){
|
||||||
lumaN = lumaS;
|
lumaN = lumaS;
|
||||||
}
|
}
|
||||||
if ( ( !pairN ) ){
|
if ((!pairN)){
|
||||||
gradientN = gradientS;
|
gradientN = gradientS;
|
||||||
}
|
}
|
||||||
if ( ( !pairN ) ){
|
if ((!pairN)){
|
||||||
lengthSign *= -1.00000;
|
lengthSign *= (-1.0);
|
||||||
}
|
}
|
||||||
posN.x = (pos.x + (( horzSpan ) ? ( 0.00000 ) : ( (lengthSign * 0.500000) )));
|
vec2 posN;
|
||||||
posN.y = (pos.y + (( horzSpan ) ? ( (lengthSign * 0.500000) ) : ( 0.00000 )));
|
posN.x = (pos.x + (( horzSpan ) ? ( 0.0 ) : ( (lengthSign * 0.5) )));
|
||||||
gradientN *= 0.250000;
|
posN.y = (pos.y + (( horzSpan ) ? ( (lengthSign * 0.5) ) : ( 0.0 )));
|
||||||
posP = posN;
|
gradientN *= (1.0 / 4.0);
|
||||||
offNP = (( horzSpan ) ? ( vec2( rcpFrame.x , 0.00000) ) : ( vec2( 0.00000, rcpFrame.y ) ));
|
vec2 posP = posN;
|
||||||
lumaEndN = lumaN;
|
vec2 offNP = (( horzSpan ) ? ( vec2( rcpFrame.x, 0.0) ) : ( vec2( 0.0, rcpFrame.y) ));
|
||||||
lumaEndP = lumaN;
|
float lumaEndN = lumaN;
|
||||||
posN += (offNP * vec2( -1.00000, -1.00000));
|
float lumaEndP = lumaN;
|
||||||
posP += (offNP * vec2( 1.00000, 1.00000));
|
bool doneN = false;
|
||||||
for ( ; (i < 16); ( i++ )) {
|
bool doneP = false;
|
||||||
if ( ( !doneN ) ){
|
posN += (offNP * vec2( (-1.0), (-1.0)));
|
||||||
lumaEndN = FxaaLuma( FxaaTexLod0( tex, posN.xy ).xyz );
|
posP += (offNP * vec2( 1.0, 1.0));
|
||||||
|
int i = 0;
|
||||||
|
for ( ; (i < 16); (i++)) {
|
||||||
|
if ((!doneN)){
|
||||||
|
lumaEndN = FxaaLuma( FxaaTexLod0( tex, posN.xy).xyz);
|
||||||
}
|
}
|
||||||
if ( ( !doneP ) ){
|
if ((!doneP)){
|
||||||
lumaEndP = FxaaLuma( FxaaTexLod0( tex, posP.xy ).xyz );
|
lumaEndP = FxaaLuma( FxaaTexLod0( tex, posP.xy).xyz);
|
||||||
}
|
}
|
||||||
doneN = (doneN || (abs( (lumaEndN - lumaN) ) >= gradientN));
|
doneN = (doneN || (abs((lumaEndN - lumaN)) >= gradientN));
|
||||||
doneP = (doneP || (abs( (lumaEndP - lumaN) ) >= gradientN));
|
doneP = (doneP || (abs((lumaEndP - lumaN)) >= gradientN));
|
||||||
if ( (doneN && doneP) ){
|
if ((doneN && doneP)){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ( ( !doneN ) ){
|
if ((!doneN)){
|
||||||
posN -= offNP;
|
posN -= offNP;
|
||||||
}
|
}
|
||||||
if ( ( !doneP ) ){
|
if ((!doneP)){
|
||||||
posP += offNP;
|
posP += offNP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dstN = (( horzSpan ) ? ( (pos.x - posN.x ) ) : ( (pos.y - posN.y ) ));
|
float dstN = (( horzSpan ) ? ( (pos.x - posN.x) ) : ( (pos.y - posN.y) ));
|
||||||
dstP = (( horzSpan ) ? ( (posP.x - pos.x ) ) : ( (posP.y - pos.y ) ));
|
float dstP = (( horzSpan ) ? ( (posP.x - pos.x) ) : ( (posP.y - pos.y) ));
|
||||||
directionN = (dstN < dstP);
|
bool directionN = (dstN < dstP);
|
||||||
lumaEndN = (( directionN ) ? ( lumaEndN ) : ( lumaEndP ));
|
lumaEndN = (( directionN ) ? ( lumaEndN ) : ( lumaEndP ));
|
||||||
if ( (((lumaM - lumaN) < 0.00000) == ((lumaEndN - lumaN) < 0.00000)) ){
|
if ((((lumaM - lumaN) < 0.0) == ((lumaEndN - lumaN) < 0.0))){
|
||||||
lengthSign = 0.00000;
|
lengthSign = 0.0;
|
||||||
}
|
}
|
||||||
spanLength = (dstP + dstN);
|
float spanLength = (dstP + dstN);
|
||||||
dstN = (( directionN ) ? ( dstN ) : ( dstP ));
|
dstN = (( directionN ) ? ( dstN ) : ( dstP ));
|
||||||
subPixelOffset = ((0.500000 + (dstN * (-1.00000 / spanLength))) * lengthSign);
|
float subPixelOffset = ((0.5 + (dstN * ((-1.0) / spanLength))) * lengthSign);
|
||||||
rgbF = FxaaTexLod0( tex, vec2( (pos.x + (( horzSpan ) ? ( 0.00000 ) : ( subPixelOffset ))), (pos.y + (( horzSpan ) ? ( subPixelOffset ) : ( 0.00000 ))))).xyz ;
|
vec3 rgbF = FxaaTexLod0( tex, vec2( (pos.x + (( horzSpan ) ? ( 0.0 ) : ( subPixelOffset ))), (pos.y + (( horzSpan ) ? ( subPixelOffset ) : ( 0.0 ))))).xyz;
|
||||||
return FxaaFilterReturn( FxaaLerp3( rgbL, rgbF, blendL));
|
return FxaaFilterReturn( FxaaLerp3( rgbL, rgbF, blendL));
|
||||||
}
|
}
|
||||||
vec4 xlat_main( in vec2 uv ) {
|
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;
|
varying vec2 xlv_TEXCOORD0;
|
||||||
void main() {
|
void main() {
|
||||||
vec4 xl_retval;
|
vec4 xl_retval;
|
||||||
xl_retval = xlat_main( vec2(xlv_TEXCOORD0));
|
xl_retval = xlat_main( vec2(xlv_TEXCOORD0));
|
||||||
gl_FragData[0] = vec4( xl_retval);
|
gl_FragData[0] = vec4(xl_retval);
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ float FxaaLuma (
|
||||||
in vec3 rgb_14
|
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 (
|
vec3 FxaaLerp3 (
|
||||||
|
@ -123,289 +123,289 @@ vec3 FxaaPixelShader (
|
||||||
vec3 rgbM_67;
|
vec3 rgbM_67;
|
||||||
vec3 rgbW_68;
|
vec3 rgbW_68;
|
||||||
vec3 rgbN_69;
|
vec3 rgbN_69;
|
||||||
bool tmpvar_70;
|
vec4 tmpvar_70;
|
||||||
tmpvar_70 = bool(0);
|
tmpvar_70 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, -1.0), rcpFrame_23);
|
||||||
doneN_32 = tmpvar_70;
|
vec3 tmpvar_71;
|
||||||
bool tmpvar_71;
|
tmpvar_71 = tmpvar_70.xyz;
|
||||||
tmpvar_71 = bool(0);
|
rgbN_69 = tmpvar_71;
|
||||||
doneP_31 = tmpvar_71;
|
vec4 tmpvar_72;
|
||||||
int tmpvar_72;
|
tmpvar_72 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, 0.0), rcpFrame_23);
|
||||||
tmpvar_72 = 0;
|
vec3 tmpvar_73;
|
||||||
i_30 = tmpvar_72;
|
tmpvar_73 = tmpvar_72.xyz;
|
||||||
vec4 tmpvar_73;
|
rgbW_68 = tmpvar_73;
|
||||||
tmpvar_73 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, -1.0), rcpFrame_23);
|
vec4 tmpvar_74;
|
||||||
vec3 tmpvar_74;
|
tmpvar_74 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, 0.0), rcpFrame_23);
|
||||||
tmpvar_74 = tmpvar_73.xyz;
|
vec3 tmpvar_75;
|
||||||
rgbN_69 = tmpvar_74;
|
tmpvar_75 = tmpvar_74.xyz;
|
||||||
vec4 tmpvar_75;
|
rgbM_67 = tmpvar_75;
|
||||||
tmpvar_75 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, 0.0), rcpFrame_23);
|
vec4 tmpvar_76;
|
||||||
vec3 tmpvar_76;
|
tmpvar_76 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, 0.0), rcpFrame_23);
|
||||||
tmpvar_76 = tmpvar_75.xyz;
|
vec3 tmpvar_77;
|
||||||
rgbW_68 = tmpvar_76;
|
tmpvar_77 = tmpvar_76.xyz;
|
||||||
vec4 tmpvar_77;
|
rgbE_66 = tmpvar_77;
|
||||||
tmpvar_77 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, 0.0), rcpFrame_23);
|
vec4 tmpvar_78;
|
||||||
vec3 tmpvar_78;
|
tmpvar_78 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, 1.0), rcpFrame_23);
|
||||||
tmpvar_78 = tmpvar_77.xyz;
|
vec3 tmpvar_79;
|
||||||
rgbM_67 = tmpvar_78;
|
tmpvar_79 = tmpvar_78.xyz;
|
||||||
vec4 tmpvar_79;
|
rgbS_65 = tmpvar_79;
|
||||||
tmpvar_79 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, 0.0), rcpFrame_23);
|
float tmpvar_80;
|
||||||
vec3 tmpvar_80;
|
tmpvar_80 = FxaaLuma (rgbN_69);
|
||||||
tmpvar_80 = tmpvar_79.xyz;
|
float tmpvar_81;
|
||||||
rgbE_66 = tmpvar_80;
|
tmpvar_81 = tmpvar_80;
|
||||||
vec4 tmpvar_81;
|
lumaN_64 = tmpvar_81;
|
||||||
tmpvar_81 = FxaaTexOff (tex_22, pos_21.xy, vec2(0.0, 1.0), rcpFrame_23);
|
float tmpvar_82;
|
||||||
vec3 tmpvar_82;
|
tmpvar_82 = FxaaLuma (rgbW_68);
|
||||||
tmpvar_82 = tmpvar_81.xyz;
|
|
||||||
rgbS_65 = tmpvar_82;
|
|
||||||
float tmpvar_83;
|
float tmpvar_83;
|
||||||
tmpvar_83 = FxaaLuma (rgbN_69);
|
tmpvar_83 = tmpvar_82;
|
||||||
|
lumaW_63 = tmpvar_83;
|
||||||
float tmpvar_84;
|
float tmpvar_84;
|
||||||
tmpvar_84 = tmpvar_83;
|
tmpvar_84 = FxaaLuma (rgbM_67);
|
||||||
lumaN_64 = tmpvar_84;
|
|
||||||
float tmpvar_85;
|
float tmpvar_85;
|
||||||
tmpvar_85 = FxaaLuma (rgbW_68);
|
tmpvar_85 = tmpvar_84;
|
||||||
|
lumaM_62 = tmpvar_85;
|
||||||
float tmpvar_86;
|
float tmpvar_86;
|
||||||
tmpvar_86 = tmpvar_85;
|
tmpvar_86 = FxaaLuma (rgbE_66);
|
||||||
lumaW_63 = tmpvar_86;
|
|
||||||
float tmpvar_87;
|
float tmpvar_87;
|
||||||
tmpvar_87 = FxaaLuma (rgbM_67);
|
tmpvar_87 = tmpvar_86;
|
||||||
|
lumaE_61 = tmpvar_87;
|
||||||
float tmpvar_88;
|
float tmpvar_88;
|
||||||
tmpvar_88 = tmpvar_87;
|
tmpvar_88 = FxaaLuma (rgbS_65);
|
||||||
lumaM_62 = tmpvar_88;
|
|
||||||
float tmpvar_89;
|
float tmpvar_89;
|
||||||
tmpvar_89 = FxaaLuma (rgbE_66);
|
tmpvar_89 = tmpvar_88;
|
||||||
|
lumaS_60 = tmpvar_89;
|
||||||
float tmpvar_90;
|
float tmpvar_90;
|
||||||
tmpvar_90 = tmpvar_89;
|
tmpvar_90 = min (lumaN_64, lumaW_63);
|
||||||
lumaE_61 = tmpvar_90;
|
|
||||||
float tmpvar_91;
|
float tmpvar_91;
|
||||||
tmpvar_91 = FxaaLuma (rgbS_65);
|
tmpvar_91 = min (lumaS_60, lumaE_61);
|
||||||
float tmpvar_92;
|
float tmpvar_92;
|
||||||
tmpvar_92 = tmpvar_91;
|
tmpvar_92 = min (tmpvar_90, tmpvar_91);
|
||||||
lumaS_60 = tmpvar_92;
|
|
||||||
float tmpvar_93;
|
float tmpvar_93;
|
||||||
tmpvar_93 = min (lumaN_64, lumaW_63);
|
tmpvar_93 = min (lumaM_62, tmpvar_92);
|
||||||
float tmpvar_94;
|
float tmpvar_94;
|
||||||
tmpvar_94 = min (lumaS_60, lumaE_61);
|
tmpvar_94 = tmpvar_93;
|
||||||
|
rangeMin_59 = tmpvar_94;
|
||||||
float tmpvar_95;
|
float tmpvar_95;
|
||||||
tmpvar_95 = min (tmpvar_93, tmpvar_94);
|
tmpvar_95 = max (lumaN_64, lumaW_63);
|
||||||
float tmpvar_96;
|
float tmpvar_96;
|
||||||
tmpvar_96 = min (lumaM_62, tmpvar_95);
|
tmpvar_96 = max (lumaS_60, lumaE_61);
|
||||||
float tmpvar_97;
|
float tmpvar_97;
|
||||||
tmpvar_97 = tmpvar_96;
|
tmpvar_97 = max (tmpvar_95, tmpvar_96);
|
||||||
rangeMin_59 = tmpvar_97;
|
|
||||||
float tmpvar_98;
|
float tmpvar_98;
|
||||||
tmpvar_98 = max (lumaN_64, lumaW_63);
|
tmpvar_98 = max (lumaM_62, tmpvar_97);
|
||||||
float tmpvar_99;
|
float tmpvar_99;
|
||||||
tmpvar_99 = max (lumaS_60, lumaE_61);
|
tmpvar_99 = tmpvar_98;
|
||||||
|
rangeMax_58 = tmpvar_99;
|
||||||
float tmpvar_100;
|
float tmpvar_100;
|
||||||
tmpvar_100 = max (tmpvar_98, tmpvar_99);
|
tmpvar_100 = (rangeMax_58 - rangeMin_59);
|
||||||
|
range_57 = tmpvar_100;
|
||||||
float tmpvar_101;
|
float tmpvar_101;
|
||||||
tmpvar_101 = max (lumaM_62, tmpvar_100);
|
tmpvar_101 = max (0.0416667, (rangeMax_58 * (1.0 / 8.0)));
|
||||||
float tmpvar_102;
|
if ((range_57 < tmpvar_101)) {
|
||||||
tmpvar_102 = tmpvar_101;
|
vec3 tmpvar_102;
|
||||||
rangeMax_58 = tmpvar_102;
|
tmpvar_102 = FxaaFilterReturn (rgbM_67);
|
||||||
float tmpvar_103;
|
return tmpvar_102;
|
||||||
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;
|
|
||||||
};
|
};
|
||||||
vec3 tmpvar_106;
|
vec3 tmpvar_103;
|
||||||
tmpvar_106 = ((((rgbN_69 + rgbW_68) + rgbM_67) + rgbE_66) + rgbS_65);
|
tmpvar_103 = ((((rgbN_69 + rgbW_68) + rgbM_67) + rgbE_66) + rgbS_65);
|
||||||
rgbL_56 = tmpvar_106;
|
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;
|
float tmpvar_107;
|
||||||
tmpvar_107 = ((((lumaN_64 + lumaW_63) + lumaE_61) + lumaS_60) * 0.25);
|
tmpvar_107 = max (0.0, ((rangeL_54 / range_57) - (1.0 / 4.0)));
|
||||||
lumaL_55 = tmpvar_107;
|
|
||||||
float tmpvar_108;
|
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;
|
float tmpvar_109;
|
||||||
tmpvar_109 = tmpvar_108;
|
tmpvar_109 = min (0.75, blendL_53);
|
||||||
rangeL_54 = tmpvar_109;
|
|
||||||
float tmpvar_110;
|
float tmpvar_110;
|
||||||
tmpvar_110 = max (0.0, ((rangeL_54 / range_57) - 0.25));
|
tmpvar_110 = tmpvar_109;
|
||||||
float tmpvar_111;
|
blendL_53 = tmpvar_110;
|
||||||
tmpvar_111 = (tmpvar_110 * 1.33333);
|
vec4 tmpvar_111;
|
||||||
blendL_53 = tmpvar_111;
|
tmpvar_111 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, -1.0), rcpFrame_23);
|
||||||
float tmpvar_112;
|
vec3 tmpvar_112;
|
||||||
tmpvar_112 = min (0.75, blendL_53);
|
tmpvar_112 = tmpvar_111.xyz;
|
||||||
float tmpvar_113;
|
rgbNW_52 = tmpvar_112;
|
||||||
tmpvar_113 = tmpvar_112;
|
vec4 tmpvar_113;
|
||||||
blendL_53 = tmpvar_113;
|
tmpvar_113 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, -1.0), rcpFrame_23);
|
||||||
vec4 tmpvar_114;
|
vec3 tmpvar_114;
|
||||||
tmpvar_114 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, -1.0), rcpFrame_23);
|
tmpvar_114 = tmpvar_113.xyz;
|
||||||
vec3 tmpvar_115;
|
rgbNE_51 = tmpvar_114;
|
||||||
tmpvar_115 = tmpvar_114.xyz;
|
vec4 tmpvar_115;
|
||||||
rgbNW_52 = tmpvar_115;
|
tmpvar_115 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, 1.0), rcpFrame_23);
|
||||||
vec4 tmpvar_116;
|
vec3 tmpvar_116;
|
||||||
tmpvar_116 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, -1.0), rcpFrame_23);
|
tmpvar_116 = tmpvar_115.xyz;
|
||||||
vec3 tmpvar_117;
|
rgbSW_50 = tmpvar_116;
|
||||||
tmpvar_117 = tmpvar_116.xyz;
|
vec4 tmpvar_117;
|
||||||
rgbNE_51 = tmpvar_117;
|
tmpvar_117 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, 1.0), rcpFrame_23);
|
||||||
vec4 tmpvar_118;
|
vec3 tmpvar_118;
|
||||||
tmpvar_118 = FxaaTexOff (tex_22, pos_21.xy, vec2(-1.0, 1.0), rcpFrame_23);
|
tmpvar_118 = tmpvar_117.xyz;
|
||||||
|
rgbSE_49 = tmpvar_118;
|
||||||
vec3 tmpvar_119;
|
vec3 tmpvar_119;
|
||||||
tmpvar_119 = tmpvar_118.xyz;
|
tmpvar_119 = (rgbL_56 + (((rgbNW_52 + rgbNE_51) + rgbSW_50) + rgbSE_49));
|
||||||
rgbSW_50 = tmpvar_119;
|
rgbL_56 = tmpvar_119;
|
||||||
vec4 tmpvar_120;
|
vec3 tmpvar_120;
|
||||||
tmpvar_120 = FxaaTexOff (tex_22, pos_21.xy, vec2(1.0, 1.0), rcpFrame_23);
|
tmpvar_120 = (rgbL_56 * vec3(0.111111, 0.111111, 0.111111));
|
||||||
vec3 tmpvar_121;
|
rgbL_56 = tmpvar_120;
|
||||||
tmpvar_121 = tmpvar_120.xyz;
|
float tmpvar_121;
|
||||||
rgbSE_49 = tmpvar_121;
|
tmpvar_121 = FxaaLuma (rgbNW_52);
|
||||||
vec3 tmpvar_122;
|
float tmpvar_122;
|
||||||
tmpvar_122 = (rgbL_56 + (((rgbNW_52 + rgbNE_51) + rgbSW_50) + rgbSE_49));
|
tmpvar_122 = tmpvar_121;
|
||||||
rgbL_56 = tmpvar_122;
|
lumaNW_48 = tmpvar_122;
|
||||||
vec3 tmpvar_123;
|
float tmpvar_123;
|
||||||
tmpvar_123 = (rgbL_56 * vec3(0.111111, 0.111111, 0.111111));
|
tmpvar_123 = FxaaLuma (rgbNE_51);
|
||||||
rgbL_56 = tmpvar_123;
|
|
||||||
float tmpvar_124;
|
float tmpvar_124;
|
||||||
tmpvar_124 = FxaaLuma (rgbNW_52);
|
tmpvar_124 = tmpvar_123;
|
||||||
|
lumaNE_47 = tmpvar_124;
|
||||||
float tmpvar_125;
|
float tmpvar_125;
|
||||||
tmpvar_125 = tmpvar_124;
|
tmpvar_125 = FxaaLuma (rgbSW_50);
|
||||||
lumaNW_48 = tmpvar_125;
|
|
||||||
float tmpvar_126;
|
float tmpvar_126;
|
||||||
tmpvar_126 = FxaaLuma (rgbNE_51);
|
tmpvar_126 = tmpvar_125;
|
||||||
|
lumaSW_46 = tmpvar_126;
|
||||||
float tmpvar_127;
|
float tmpvar_127;
|
||||||
tmpvar_127 = tmpvar_126;
|
tmpvar_127 = FxaaLuma (rgbSE_49);
|
||||||
lumaNE_47 = tmpvar_127;
|
|
||||||
float tmpvar_128;
|
float tmpvar_128;
|
||||||
tmpvar_128 = FxaaLuma (rgbSW_50);
|
tmpvar_128 = tmpvar_127;
|
||||||
|
lumaSE_45 = tmpvar_128;
|
||||||
float tmpvar_129;
|
float tmpvar_129;
|
||||||
tmpvar_129 = tmpvar_128;
|
tmpvar_129 = abs ((((0.25 * lumaNW_48) + (-(0.5) * lumaN_64)) + (0.25 * lumaNE_47)));
|
||||||
lumaSW_46 = tmpvar_129;
|
|
||||||
float tmpvar_130;
|
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;
|
float tmpvar_131;
|
||||||
tmpvar_131 = tmpvar_130;
|
tmpvar_131 = abs ((((0.25 * lumaSW_46) + (-(0.5) * lumaS_60)) + (0.25 * lumaSE_45)));
|
||||||
lumaSE_45 = tmpvar_131;
|
|
||||||
float tmpvar_132;
|
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;
|
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;
|
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;
|
float tmpvar_135;
|
||||||
tmpvar_135 = ((tmpvar_132 + tmpvar_133) + tmpvar_134);
|
tmpvar_135 = abs ((((0.25 * lumaNE_47) + (-(0.5) * lumaE_61)) + (0.25 * lumaSE_45)));
|
||||||
edgeVert_44 = tmpvar_135;
|
|
||||||
float tmpvar_136;
|
float tmpvar_136;
|
||||||
tmpvar_136 = abs ((((0.25 * lumaNW_48) + (-(0.5) * lumaW_63)) + (0.25 * lumaSW_46)));
|
tmpvar_136 = ((tmpvar_133 + tmpvar_134) + tmpvar_135);
|
||||||
float tmpvar_137;
|
edgeHorz_43 = tmpvar_136;
|
||||||
tmpvar_137 = abs ((((0.5 * lumaN_64) + (-(1.0) * lumaM_62)) + (0.5 * lumaS_60)));
|
bool tmpvar_137;
|
||||||
|
tmpvar_137 = (edgeHorz_43 >= edgeVert_44);
|
||||||
|
horzSpan_42 = tmpvar_137;
|
||||||
float tmpvar_138;
|
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) {
|
if (horzSpan_42) {
|
||||||
tmpvar_141 = -(rcpFrame_23.y);
|
tmpvar_138 = -(rcpFrame_23.y);
|
||||||
} else {
|
} 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;
|
float tmpvar_142;
|
||||||
tmpvar_142 = tmpvar_141;
|
tmpvar_142 = abs ((lumaN_64 - lumaM_62));
|
||||||
lengthSign_41 = tmpvar_142;
|
float tmpvar_143;
|
||||||
if (!(horzSpan_42)) {
|
tmpvar_143 = tmpvar_142;
|
||||||
float tmpvar_143;
|
gradientN_40 = tmpvar_143;
|
||||||
tmpvar_143 = lumaW_63;
|
float tmpvar_144;
|
||||||
lumaN_64 = tmpvar_143;
|
tmpvar_144 = abs ((lumaS_60 - lumaM_62));
|
||||||
};
|
|
||||||
if (!(horzSpan_42)) {
|
|
||||||
float tmpvar_144;
|
|
||||||
tmpvar_144 = lumaE_61;
|
|
||||||
lumaS_60 = tmpvar_144;
|
|
||||||
};
|
|
||||||
float tmpvar_145;
|
float tmpvar_145;
|
||||||
tmpvar_145 = abs ((lumaN_64 - lumaM_62));
|
tmpvar_145 = tmpvar_144;
|
||||||
|
gradientS_39 = tmpvar_145;
|
||||||
float tmpvar_146;
|
float tmpvar_146;
|
||||||
tmpvar_146 = tmpvar_145;
|
tmpvar_146 = ((lumaN_64 + lumaM_62) * 0.5);
|
||||||
gradientN_40 = tmpvar_146;
|
lumaN_64 = tmpvar_146;
|
||||||
float tmpvar_147;
|
float tmpvar_147;
|
||||||
tmpvar_147 = abs ((lumaS_60 - lumaM_62));
|
tmpvar_147 = ((lumaS_60 + lumaM_62) * 0.5);
|
||||||
float tmpvar_148;
|
lumaS_60 = tmpvar_147;
|
||||||
tmpvar_148 = tmpvar_147;
|
bool tmpvar_148;
|
||||||
gradientS_39 = tmpvar_148;
|
tmpvar_148 = (gradientN_40 >= gradientS_39);
|
||||||
float tmpvar_149;
|
pairN_38 = tmpvar_148;
|
||||||
tmpvar_149 = ((lumaN_64 + lumaM_62) * 0.5);
|
|
||||||
lumaN_64 = tmpvar_149;
|
|
||||||
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;
|
|
||||||
if (!(pairN_38)) {
|
if (!(pairN_38)) {
|
||||||
float tmpvar_152;
|
float tmpvar_149;
|
||||||
tmpvar_152 = lumaS_60;
|
tmpvar_149 = lumaS_60;
|
||||||
lumaN_64 = tmpvar_152;
|
lumaN_64 = tmpvar_149;
|
||||||
};
|
};
|
||||||
if (!(pairN_38)) {
|
if (!(pairN_38)) {
|
||||||
float tmpvar_153;
|
float tmpvar_150;
|
||||||
tmpvar_153 = gradientS_39;
|
tmpvar_150 = gradientS_39;
|
||||||
gradientN_40 = tmpvar_153;
|
gradientN_40 = tmpvar_150;
|
||||||
};
|
};
|
||||||
if (!(pairN_38)) {
|
if (!(pairN_38)) {
|
||||||
float tmpvar_154;
|
float tmpvar_151;
|
||||||
tmpvar_154 = (lengthSign_41 * -(1.0));
|
tmpvar_151 = (lengthSign_41 * -(1.0));
|
||||||
lengthSign_41 = tmpvar_154;
|
lengthSign_41 = tmpvar_151;
|
||||||
|
};
|
||||||
|
float tmpvar_152;
|
||||||
|
if (horzSpan_42) {
|
||||||
|
tmpvar_152 = 0.0;
|
||||||
|
} else {
|
||||||
|
tmpvar_152 = (lengthSign_41 * 0.5);
|
||||||
|
};
|
||||||
|
float tmpvar_153;
|
||||||
|
tmpvar_153 = (pos_21.x + tmpvar_152);
|
||||||
|
posN_37.x = tmpvar_153;
|
||||||
|
float tmpvar_154;
|
||||||
|
if (horzSpan_42) {
|
||||||
|
tmpvar_154 = (lengthSign_41 * 0.5);
|
||||||
|
} else {
|
||||||
|
tmpvar_154 = 0.0;
|
||||||
};
|
};
|
||||||
float tmpvar_155;
|
float tmpvar_155;
|
||||||
if (horzSpan_42) {
|
tmpvar_155 = (pos_21.y + tmpvar_154);
|
||||||
tmpvar_155 = 0.0;
|
posN_37.y = vec2(tmpvar_155).y;
|
||||||
} else {
|
|
||||||
tmpvar_155 = (lengthSign_41 * 0.5);
|
|
||||||
};
|
|
||||||
float tmpvar_156;
|
float tmpvar_156;
|
||||||
tmpvar_156 = (pos_21.x + tmpvar_155);
|
tmpvar_156 = (gradientN_40 * (1.0 / 4.0));
|
||||||
posN_37.x = tmpvar_156;
|
gradientN_40 = tmpvar_156;
|
||||||
float tmpvar_157;
|
vec2 tmpvar_157;
|
||||||
|
tmpvar_157 = posN_37;
|
||||||
|
posP_36 = tmpvar_157;
|
||||||
|
vec2 tmpvar_158;
|
||||||
if (horzSpan_42) {
|
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 {
|
} else {
|
||||||
tmpvar_157 = 0.0;
|
vec2 tmpvar_160;
|
||||||
|
tmpvar_160.x = 0.0;
|
||||||
|
tmpvar_160.y = rcpFrame_23.y;
|
||||||
|
tmpvar_158 = tmpvar_160;
|
||||||
};
|
};
|
||||||
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;
|
vec2 tmpvar_161;
|
||||||
if (horzSpan_42) {
|
tmpvar_161 = tmpvar_158;
|
||||||
vec2 tmpvar_162;
|
offNP_35 = tmpvar_161;
|
||||||
tmpvar_162.y = 0.0;
|
float tmpvar_162;
|
||||||
tmpvar_162.x = rcpFrame_23.x;
|
tmpvar_162 = lumaN_64;
|
||||||
tmpvar_161 = tmpvar_162;
|
lumaEndN_34 = tmpvar_162;
|
||||||
} else {
|
float tmpvar_163;
|
||||||
vec2 tmpvar_163;
|
tmpvar_163 = lumaN_64;
|
||||||
tmpvar_163.x = 0.0;
|
lumaEndP_33 = tmpvar_163;
|
||||||
tmpvar_163.y = rcpFrame_23.y;
|
bool tmpvar_164;
|
||||||
tmpvar_161 = tmpvar_163;
|
tmpvar_164 = bool(0);
|
||||||
};
|
doneN_32 = tmpvar_164;
|
||||||
vec2 tmpvar_164;
|
bool tmpvar_165;
|
||||||
tmpvar_164 = tmpvar_161;
|
tmpvar_165 = bool(0);
|
||||||
offNP_35 = tmpvar_164;
|
doneP_31 = tmpvar_165;
|
||||||
float tmpvar_165;
|
vec2 tmpvar_166;
|
||||||
tmpvar_165 = lumaN_64;
|
tmpvar_166 = (posN_37 + (offNP_35 * vec2(-1.0, -1.0)));
|
||||||
lumaEndN_34 = tmpvar_165;
|
posN_37 = tmpvar_166;
|
||||||
float tmpvar_166;
|
|
||||||
tmpvar_166 = lumaN_64;
|
|
||||||
lumaEndP_33 = tmpvar_166;
|
|
||||||
vec2 tmpvar_167;
|
vec2 tmpvar_167;
|
||||||
tmpvar_167 = (posN_37 + (offNP_35 * vec2(-1.0, -1.0)));
|
tmpvar_167 = (posP_36 + (offNP_35 * vec2(1.0, 1.0)));
|
||||||
posN_37 = tmpvar_167;
|
posP_36 = tmpvar_167;
|
||||||
vec2 tmpvar_168;
|
int tmpvar_168;
|
||||||
tmpvar_168 = (posP_36 + (offNP_35 * vec2(1.0, 1.0)));
|
tmpvar_168 = 0;
|
||||||
posP_36 = tmpvar_168;
|
i_30 = tmpvar_168;
|
||||||
while (true) {
|
while (true) {
|
||||||
if (!((i_30 < 16))) {
|
if (!((i_30 < 16))) {
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -19,9 +19,6 @@ void main ()
|
||||||
float lengthSign_12;
|
float lengthSign_12;
|
||||||
float lumaS_13;
|
float lumaS_13;
|
||||||
float lumaN_14;
|
float lumaN_14;
|
||||||
doneN_5 = bool(0);
|
|
||||||
doneP_4 = bool(0);
|
|
||||||
i_3 = 0;
|
|
||||||
vec4 tmpvar_15;
|
vec4 tmpvar_15;
|
||||||
tmpvar_15.zw = vec2(0.0, 0.0);
|
tmpvar_15.zw = vec2(0.0, 0.0);
|
||||||
tmpvar_15.xy = (xlv_TEXCOORD0 + (vec2(0.0, -1.0) * _MainTex_TexelSize.xy));
|
tmpvar_15.xy = (xlv_TEXCOORD0 + (vec2(0.0, -1.0) * _MainTex_TexelSize.xy));
|
||||||
|
@ -163,12 +160,12 @@ void main ()
|
||||||
offNP_8 = tmpvar_54;
|
offNP_8 = tmpvar_54;
|
||||||
lumaEndN_7 = lumaN_14;
|
lumaEndN_7 = lumaN_14;
|
||||||
lumaEndP_6 = 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)));
|
posN_10 = (posN_10 + (tmpvar_54 * vec2(-1.0, -1.0)));
|
||||||
posP_9 = (posP_9 + tmpvar_54);
|
posP_9 = (posP_9 + tmpvar_54);
|
||||||
while (true) {
|
i_3 = 0;
|
||||||
if ((i_3 >= 16)) {
|
for (int i_3 = 0; i_3 < 16; ) {
|
||||||
break;
|
|
||||||
};
|
|
||||||
if (!(doneN_5)) {
|
if (!(doneN_5)) {
|
||||||
vec4 tmpvar_57;
|
vec4 tmpvar_57;
|
||||||
tmpvar_57 = texture2DLod (_MainTex, posN_10, 0.0);
|
tmpvar_57 = texture2DLod (_MainTex, posN_10, 0.0);
|
||||||
|
|
|
@ -14,23 +14,23 @@ void main ()
|
||||||
highp vec2 dir_5;
|
highp vec2 dir_5;
|
||||||
highp float lumaM_6;
|
highp float lumaM_6;
|
||||||
lowp vec4 tmpvar_7;
|
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;
|
highp float tmpvar_8;
|
||||||
tmpvar_8 = tmpvar_7.y;
|
tmpvar_8 = tmpvar_7.y;
|
||||||
lowp vec4 tmpvar_9;
|
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;
|
highp float tmpvar_10;
|
||||||
tmpvar_10 = tmpvar_9.y;
|
tmpvar_10 = tmpvar_9.y;
|
||||||
lowp vec4 tmpvar_11;
|
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;
|
highp float tmpvar_12;
|
||||||
tmpvar_12 = tmpvar_11.y;
|
tmpvar_12 = tmpvar_11.y;
|
||||||
lowp vec4 tmpvar_13;
|
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;
|
highp float tmpvar_14;
|
||||||
tmpvar_14 = tmpvar_13.y;
|
tmpvar_14 = tmpvar_13.y;
|
||||||
lowp vec4 tmpvar_15;
|
lowp vec4 tmpvar_15;
|
||||||
tmpvar_15 = texture2DLod (_MainTex, xlv_TEXCOORD0, 0.0);
|
tmpvar_15 = texture2DLodEXT (_MainTex, xlv_TEXCOORD0, 0.0);
|
||||||
lowp float tmpvar_16;
|
lowp float tmpvar_16;
|
||||||
tmpvar_16 = tmpvar_15.y;
|
tmpvar_16 = tmpvar_15.y;
|
||||||
lumaM_6 = tmpvar_16;
|
lumaM_6 = tmpvar_16;
|
||||||
|
@ -70,9 +70,9 @@ void main ()
|
||||||
tmpvar_29.zw = vec2(0.0, 0.0);
|
tmpvar_29.zw = vec2(0.0, 0.0);
|
||||||
tmpvar_29.xy = (xlv_TEXCOORD0 + (tmpvar_27 * fxaaConsoleRcpFrameOpt2_2.zw));
|
tmpvar_29.xy = (xlv_TEXCOORD0 + (tmpvar_27 * fxaaConsoleRcpFrameOpt2_2.zw));
|
||||||
lowp vec4 tmpvar_30;
|
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;
|
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;
|
rgbyB_4 = tmpvar_31;
|
||||||
if (((tmpvar_31.y < tmpvar_19) || (tmpvar_31.y > tmpvar_18))) {
|
if (((tmpvar_31.y < tmpvar_19) || (tmpvar_31.y > tmpvar_18))) {
|
||||||
rgbyB_4.xyz = (tmpvar_30.xyz * 0.5);
|
rgbyB_4.xyz = (tmpvar_30.xyz * 0.5);
|
||||||
|
|
|
@ -23,13 +23,13 @@ void main ()
|
||||||
posM_15.x = xlv_TEXCOORD0.x;
|
posM_15.x = xlv_TEXCOORD0.x;
|
||||||
posM_15.y = xlv_TEXCOORD0.y;
|
posM_15.y = xlv_TEXCOORD0.y;
|
||||||
lowp vec4 tmpvar_16;
|
lowp vec4 tmpvar_16;
|
||||||
tmpvar_16 = texture2DLod (_MainTex, xlv_TEXCOORD0, 0.0);
|
tmpvar_16 = texture2DLodEXT (_MainTex, xlv_TEXCOORD0, 0.0);
|
||||||
rgbyM_14 = tmpvar_16;
|
rgbyM_14 = tmpvar_16;
|
||||||
highp vec4 tmpvar_17;
|
highp vec4 tmpvar_17;
|
||||||
tmpvar_17.zw = vec2(0.0, 0.0);
|
tmpvar_17.zw = vec2(0.0, 0.0);
|
||||||
tmpvar_17.xy = (xlv_TEXCOORD0 + (vec2(0.0, 1.0) * _MainTex_TexelSize.xy));
|
tmpvar_17.xy = (xlv_TEXCOORD0 + (vec2(0.0, 1.0) * _MainTex_TexelSize.xy));
|
||||||
lowp vec4 tmpvar_18;
|
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;
|
highp vec4 rgba_19;
|
||||||
rgba_19 = tmpvar_18;
|
rgba_19 = tmpvar_18;
|
||||||
lumaS_13 = rgba_19.w;
|
lumaS_13 = rgba_19.w;
|
||||||
|
@ -37,7 +37,7 @@ void main ()
|
||||||
tmpvar_20.zw = vec2(0.0, 0.0);
|
tmpvar_20.zw = vec2(0.0, 0.0);
|
||||||
tmpvar_20.xy = (xlv_TEXCOORD0 + (vec2(1.0, 0.0) * _MainTex_TexelSize.xy));
|
tmpvar_20.xy = (xlv_TEXCOORD0 + (vec2(1.0, 0.0) * _MainTex_TexelSize.xy));
|
||||||
lowp vec4 tmpvar_21;
|
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 float tmpvar_22;
|
||||||
highp vec4 rgba_23;
|
highp vec4 rgba_23;
|
||||||
rgba_23 = tmpvar_21;
|
rgba_23 = tmpvar_21;
|
||||||
|
@ -46,7 +46,7 @@ void main ()
|
||||||
tmpvar_24.zw = vec2(0.0, 0.0);
|
tmpvar_24.zw = vec2(0.0, 0.0);
|
||||||
tmpvar_24.xy = (xlv_TEXCOORD0 + (vec2(0.0, -1.0) * _MainTex_TexelSize.xy));
|
tmpvar_24.xy = (xlv_TEXCOORD0 + (vec2(0.0, -1.0) * _MainTex_TexelSize.xy));
|
||||||
lowp vec4 tmpvar_25;
|
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;
|
highp vec4 rgba_26;
|
||||||
rgba_26 = tmpvar_25;
|
rgba_26 = tmpvar_25;
|
||||||
lumaN_12 = rgba_26.w;
|
lumaN_12 = rgba_26.w;
|
||||||
|
@ -54,7 +54,7 @@ void main ()
|
||||||
tmpvar_27.zw = vec2(0.0, 0.0);
|
tmpvar_27.zw = vec2(0.0, 0.0);
|
||||||
tmpvar_27.xy = (xlv_TEXCOORD0 + (vec2(-1.0, 0.0) * _MainTex_TexelSize.xy));
|
tmpvar_27.xy = (xlv_TEXCOORD0 + (vec2(-1.0, 0.0) * _MainTex_TexelSize.xy));
|
||||||
lowp vec4 tmpvar_28;
|
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 float tmpvar_29;
|
||||||
highp vec4 rgba_30;
|
highp vec4 rgba_30;
|
||||||
rgba_30 = tmpvar_28;
|
rgba_30 = tmpvar_28;
|
||||||
|
@ -70,28 +70,28 @@ void main ()
|
||||||
tmpvar_33.zw = vec2(0.0, 0.0);
|
tmpvar_33.zw = vec2(0.0, 0.0);
|
||||||
tmpvar_33.xy = (xlv_TEXCOORD0 + (vec2(-1.0, -1.0) * _MainTex_TexelSize.xy));
|
tmpvar_33.xy = (xlv_TEXCOORD0 + (vec2(-1.0, -1.0) * _MainTex_TexelSize.xy));
|
||||||
lowp vec4 tmpvar_34;
|
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;
|
highp vec4 rgba_35;
|
||||||
rgba_35 = tmpvar_34;
|
rgba_35 = tmpvar_34;
|
||||||
highp vec4 tmpvar_36;
|
highp vec4 tmpvar_36;
|
||||||
tmpvar_36.zw = vec2(0.0, 0.0);
|
tmpvar_36.zw = vec2(0.0, 0.0);
|
||||||
tmpvar_36.xy = (xlv_TEXCOORD0 + _MainTex_TexelSize.xy);
|
tmpvar_36.xy = (xlv_TEXCOORD0 + _MainTex_TexelSize.xy);
|
||||||
lowp vec4 tmpvar_37;
|
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;
|
highp vec4 rgba_38;
|
||||||
rgba_38 = tmpvar_37;
|
rgba_38 = tmpvar_37;
|
||||||
highp vec4 tmpvar_39;
|
highp vec4 tmpvar_39;
|
||||||
tmpvar_39.zw = vec2(0.0, 0.0);
|
tmpvar_39.zw = vec2(0.0, 0.0);
|
||||||
tmpvar_39.xy = (xlv_TEXCOORD0 + (vec2(1.0, -1.0) * _MainTex_TexelSize.xy));
|
tmpvar_39.xy = (xlv_TEXCOORD0 + (vec2(1.0, -1.0) * _MainTex_TexelSize.xy));
|
||||||
lowp vec4 tmpvar_40;
|
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;
|
highp vec4 rgba_41;
|
||||||
rgba_41 = tmpvar_40;
|
rgba_41 = tmpvar_40;
|
||||||
highp vec4 tmpvar_42;
|
highp vec4 tmpvar_42;
|
||||||
tmpvar_42.zw = vec2(0.0, 0.0);
|
tmpvar_42.zw = vec2(0.0, 0.0);
|
||||||
tmpvar_42.xy = (xlv_TEXCOORD0 + (vec2(-1.0, 1.0) * _MainTex_TexelSize.xy));
|
tmpvar_42.xy = (xlv_TEXCOORD0 + (vec2(-1.0, 1.0) * _MainTex_TexelSize.xy));
|
||||||
lowp vec4 tmpvar_43;
|
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;
|
highp vec4 rgba_44;
|
||||||
rgba_44 = tmpvar_43;
|
rgba_44 = tmpvar_43;
|
||||||
highp float tmpvar_45;
|
highp float tmpvar_45;
|
||||||
|
@ -163,14 +163,14 @@ void main ()
|
||||||
highp float tmpvar_61;
|
highp float tmpvar_61;
|
||||||
tmpvar_61 = ((-2.0 * tmpvar_58) + 3.0);
|
tmpvar_61 = ((-2.0 * tmpvar_58) + 3.0);
|
||||||
lowp vec4 tmpvar_62;
|
lowp vec4 tmpvar_62;
|
||||||
tmpvar_62 = texture2DLod (_MainTex, posN_8, 0.0);
|
tmpvar_62 = texture2DLodEXT (_MainTex, posN_8, 0.0);
|
||||||
highp vec4 rgba_63;
|
highp vec4 rgba_63;
|
||||||
rgba_63 = tmpvar_62;
|
rgba_63 = tmpvar_62;
|
||||||
lumaEndN_6 = rgba_63.w;
|
lumaEndN_6 = rgba_63.w;
|
||||||
highp float tmpvar_64;
|
highp float tmpvar_64;
|
||||||
tmpvar_64 = (tmpvar_58 * tmpvar_58);
|
tmpvar_64 = (tmpvar_58 * tmpvar_58);
|
||||||
lowp vec4 tmpvar_65;
|
lowp vec4 tmpvar_65;
|
||||||
tmpvar_65 = texture2DLod (_MainTex, posP_7, 0.0);
|
tmpvar_65 = texture2DLodEXT (_MainTex, posP_7, 0.0);
|
||||||
highp vec4 rgba_66;
|
highp vec4 rgba_66;
|
||||||
rgba_66 = tmpvar_65;
|
rgba_66 = tmpvar_65;
|
||||||
lumaEndP_5 = rgba_66.w;
|
lumaEndP_5 = rgba_66.w;
|
||||||
|
@ -210,14 +210,14 @@ void main ()
|
||||||
if (tmpvar_74) {
|
if (tmpvar_74) {
|
||||||
if (!(tmpvar_72)) {
|
if (!(tmpvar_72)) {
|
||||||
lowp vec4 tmpvar_75;
|
lowp vec4 tmpvar_75;
|
||||||
tmpvar_75 = texture2DLod (_MainTex, posN_8, 0.0);
|
tmpvar_75 = texture2DLodEXT (_MainTex, posN_8, 0.0);
|
||||||
highp vec4 rgba_76;
|
highp vec4 rgba_76;
|
||||||
rgba_76 = tmpvar_75;
|
rgba_76 = tmpvar_75;
|
||||||
lumaEndN_6 = rgba_76.w;
|
lumaEndN_6 = rgba_76.w;
|
||||||
};
|
};
|
||||||
if (!(tmpvar_73)) {
|
if (!(tmpvar_73)) {
|
||||||
lowp vec4 tmpvar_77;
|
lowp vec4 tmpvar_77;
|
||||||
tmpvar_77 = texture2DLod (_MainTex, posP_7, 0.0);
|
tmpvar_77 = texture2DLodEXT (_MainTex, posP_7, 0.0);
|
||||||
highp vec4 rgba_78;
|
highp vec4 rgba_78;
|
||||||
rgba_78 = tmpvar_77;
|
rgba_78 = tmpvar_77;
|
||||||
lumaEndP_5 = rgba_78.w;
|
lumaEndP_5 = rgba_78.w;
|
||||||
|
@ -249,14 +249,14 @@ void main ()
|
||||||
if (tmpvar_81) {
|
if (tmpvar_81) {
|
||||||
if (!(tmpvar_79)) {
|
if (!(tmpvar_79)) {
|
||||||
lowp vec4 tmpvar_82;
|
lowp vec4 tmpvar_82;
|
||||||
tmpvar_82 = texture2DLod (_MainTex, posN_8, 0.0);
|
tmpvar_82 = texture2DLodEXT (_MainTex, posN_8, 0.0);
|
||||||
highp vec4 rgba_83;
|
highp vec4 rgba_83;
|
||||||
rgba_83 = tmpvar_82;
|
rgba_83 = tmpvar_82;
|
||||||
lumaEndN_6 = rgba_83.w;
|
lumaEndN_6 = rgba_83.w;
|
||||||
};
|
};
|
||||||
if (!(tmpvar_80)) {
|
if (!(tmpvar_80)) {
|
||||||
lowp vec4 tmpvar_84;
|
lowp vec4 tmpvar_84;
|
||||||
tmpvar_84 = texture2DLod (_MainTex, posP_7, 0.0);
|
tmpvar_84 = texture2DLodEXT (_MainTex, posP_7, 0.0);
|
||||||
highp vec4 rgba_85;
|
highp vec4 rgba_85;
|
||||||
rgba_85 = tmpvar_84;
|
rgba_85 = tmpvar_84;
|
||||||
lumaEndP_5 = rgba_85.w;
|
lumaEndP_5 = rgba_85.w;
|
||||||
|
@ -288,14 +288,14 @@ void main ()
|
||||||
if (tmpvar_88) {
|
if (tmpvar_88) {
|
||||||
if (!(tmpvar_86)) {
|
if (!(tmpvar_86)) {
|
||||||
lowp vec4 tmpvar_89;
|
lowp vec4 tmpvar_89;
|
||||||
tmpvar_89 = texture2DLod (_MainTex, posN_8, 0.0);
|
tmpvar_89 = texture2DLodEXT (_MainTex, posN_8, 0.0);
|
||||||
highp vec4 rgba_90;
|
highp vec4 rgba_90;
|
||||||
rgba_90 = tmpvar_89;
|
rgba_90 = tmpvar_89;
|
||||||
lumaEndN_6 = rgba_90.w;
|
lumaEndN_6 = rgba_90.w;
|
||||||
};
|
};
|
||||||
if (!(tmpvar_87)) {
|
if (!(tmpvar_87)) {
|
||||||
lowp vec4 tmpvar_91;
|
lowp vec4 tmpvar_91;
|
||||||
tmpvar_91 = texture2DLod (_MainTex, posP_7, 0.0);
|
tmpvar_91 = texture2DLodEXT (_MainTex, posP_7, 0.0);
|
||||||
highp vec4 rgba_92;
|
highp vec4 rgba_92;
|
||||||
rgba_92 = tmpvar_91;
|
rgba_92 = tmpvar_91;
|
||||||
lumaEndP_5 = rgba_92.w;
|
lumaEndP_5 = rgba_92.w;
|
||||||
|
@ -327,14 +327,14 @@ void main ()
|
||||||
if (tmpvar_95) {
|
if (tmpvar_95) {
|
||||||
if (!(tmpvar_93)) {
|
if (!(tmpvar_93)) {
|
||||||
lowp vec4 tmpvar_96;
|
lowp vec4 tmpvar_96;
|
||||||
tmpvar_96 = texture2DLod (_MainTex, posN_8, 0.0);
|
tmpvar_96 = texture2DLodEXT (_MainTex, posN_8, 0.0);
|
||||||
highp vec4 rgba_97;
|
highp vec4 rgba_97;
|
||||||
rgba_97 = tmpvar_96;
|
rgba_97 = tmpvar_96;
|
||||||
lumaEndN_6 = rgba_97.w;
|
lumaEndN_6 = rgba_97.w;
|
||||||
};
|
};
|
||||||
if (!(tmpvar_94)) {
|
if (!(tmpvar_94)) {
|
||||||
lowp vec4 tmpvar_98;
|
lowp vec4 tmpvar_98;
|
||||||
tmpvar_98 = texture2DLod (_MainTex, posP_7, 0.0);
|
tmpvar_98 = texture2DLodEXT (_MainTex, posP_7, 0.0);
|
||||||
highp vec4 rgba_99;
|
highp vec4 rgba_99;
|
||||||
rgba_99 = tmpvar_98;
|
rgba_99 = tmpvar_98;
|
||||||
lumaEndP_5 = rgba_99.w;
|
lumaEndP_5 = rgba_99.w;
|
||||||
|
@ -366,14 +366,14 @@ void main ()
|
||||||
if (tmpvar_102) {
|
if (tmpvar_102) {
|
||||||
if (!(tmpvar_100)) {
|
if (!(tmpvar_100)) {
|
||||||
lowp vec4 tmpvar_103;
|
lowp vec4 tmpvar_103;
|
||||||
tmpvar_103 = texture2DLod (_MainTex, posN_8, 0.0);
|
tmpvar_103 = texture2DLodEXT (_MainTex, posN_8, 0.0);
|
||||||
highp vec4 rgba_104;
|
highp vec4 rgba_104;
|
||||||
rgba_104 = tmpvar_103;
|
rgba_104 = tmpvar_103;
|
||||||
lumaEndN_6 = rgba_104.w;
|
lumaEndN_6 = rgba_104.w;
|
||||||
};
|
};
|
||||||
if (!(tmpvar_101)) {
|
if (!(tmpvar_101)) {
|
||||||
lowp vec4 tmpvar_105;
|
lowp vec4 tmpvar_105;
|
||||||
tmpvar_105 = texture2DLod (_MainTex, posP_7, 0.0);
|
tmpvar_105 = texture2DLodEXT (_MainTex, posP_7, 0.0);
|
||||||
highp vec4 rgba_106;
|
highp vec4 rgba_106;
|
||||||
rgba_106 = tmpvar_105;
|
rgba_106 = tmpvar_105;
|
||||||
lumaEndP_5 = rgba_106.w;
|
lumaEndP_5 = rgba_106.w;
|
||||||
|
@ -405,14 +405,14 @@ void main ()
|
||||||
if (tmpvar_109) {
|
if (tmpvar_109) {
|
||||||
if (!(tmpvar_107)) {
|
if (!(tmpvar_107)) {
|
||||||
lowp vec4 tmpvar_110;
|
lowp vec4 tmpvar_110;
|
||||||
tmpvar_110 = texture2DLod (_MainTex, posN_8, 0.0);
|
tmpvar_110 = texture2DLodEXT (_MainTex, posN_8, 0.0);
|
||||||
highp vec4 rgba_111;
|
highp vec4 rgba_111;
|
||||||
rgba_111 = tmpvar_110;
|
rgba_111 = tmpvar_110;
|
||||||
lumaEndN_6 = rgba_111.w;
|
lumaEndN_6 = rgba_111.w;
|
||||||
};
|
};
|
||||||
if (!(tmpvar_108)) {
|
if (!(tmpvar_108)) {
|
||||||
lowp vec4 tmpvar_112;
|
lowp vec4 tmpvar_112;
|
||||||
tmpvar_112 = texture2DLod (_MainTex, posP_7, 0.0);
|
tmpvar_112 = texture2DLodEXT (_MainTex, posP_7, 0.0);
|
||||||
highp vec4 rgba_113;
|
highp vec4 rgba_113;
|
||||||
rgba_113 = tmpvar_112;
|
rgba_113 = tmpvar_112;
|
||||||
lumaEndP_5 = rgba_113.w;
|
lumaEndP_5 = rgba_113.w;
|
||||||
|
@ -444,14 +444,14 @@ void main ()
|
||||||
if (tmpvar_116) {
|
if (tmpvar_116) {
|
||||||
if (!(tmpvar_114)) {
|
if (!(tmpvar_114)) {
|
||||||
lowp vec4 tmpvar_117;
|
lowp vec4 tmpvar_117;
|
||||||
tmpvar_117 = texture2DLod (_MainTex, posN_8, 0.0);
|
tmpvar_117 = texture2DLodEXT (_MainTex, posN_8, 0.0);
|
||||||
highp vec4 rgba_118;
|
highp vec4 rgba_118;
|
||||||
rgba_118 = tmpvar_117;
|
rgba_118 = tmpvar_117;
|
||||||
lumaEndN_6 = rgba_118.w;
|
lumaEndN_6 = rgba_118.w;
|
||||||
};
|
};
|
||||||
if (!(tmpvar_115)) {
|
if (!(tmpvar_115)) {
|
||||||
lowp vec4 tmpvar_119;
|
lowp vec4 tmpvar_119;
|
||||||
tmpvar_119 = texture2DLod (_MainTex, posP_7, 0.0);
|
tmpvar_119 = texture2DLodEXT (_MainTex, posP_7, 0.0);
|
||||||
highp vec4 rgba_120;
|
highp vec4 rgba_120;
|
||||||
rgba_120 = tmpvar_119;
|
rgba_120 = tmpvar_119;
|
||||||
lumaEndP_5 = rgba_120.w;
|
lumaEndP_5 = rgba_120.w;
|
||||||
|
@ -483,14 +483,14 @@ void main ()
|
||||||
if (tmpvar_123) {
|
if (tmpvar_123) {
|
||||||
if (!(tmpvar_121)) {
|
if (!(tmpvar_121)) {
|
||||||
lowp vec4 tmpvar_124;
|
lowp vec4 tmpvar_124;
|
||||||
tmpvar_124 = texture2DLod (_MainTex, posN_8, 0.0);
|
tmpvar_124 = texture2DLodEXT (_MainTex, posN_8, 0.0);
|
||||||
highp vec4 rgba_125;
|
highp vec4 rgba_125;
|
||||||
rgba_125 = tmpvar_124;
|
rgba_125 = tmpvar_124;
|
||||||
lumaEndN_6 = rgba_125.w;
|
lumaEndN_6 = rgba_125.w;
|
||||||
};
|
};
|
||||||
if (!(tmpvar_122)) {
|
if (!(tmpvar_122)) {
|
||||||
lowp vec4 tmpvar_126;
|
lowp vec4 tmpvar_126;
|
||||||
tmpvar_126 = texture2DLod (_MainTex, posP_7, 0.0);
|
tmpvar_126 = texture2DLodEXT (_MainTex, posP_7, 0.0);
|
||||||
highp vec4 rgba_127;
|
highp vec4 rgba_127;
|
||||||
rgba_127 = tmpvar_126;
|
rgba_127 = tmpvar_126;
|
||||||
lumaEndP_5 = rgba_127.w;
|
lumaEndP_5 = rgba_127.w;
|
||||||
|
@ -522,14 +522,14 @@ void main ()
|
||||||
if (tmpvar_130) {
|
if (tmpvar_130) {
|
||||||
if (!(tmpvar_128)) {
|
if (!(tmpvar_128)) {
|
||||||
lowp vec4 tmpvar_131;
|
lowp vec4 tmpvar_131;
|
||||||
tmpvar_131 = texture2DLod (_MainTex, posN_8, 0.0);
|
tmpvar_131 = texture2DLodEXT (_MainTex, posN_8, 0.0);
|
||||||
highp vec4 rgba_132;
|
highp vec4 rgba_132;
|
||||||
rgba_132 = tmpvar_131;
|
rgba_132 = tmpvar_131;
|
||||||
lumaEndN_6 = rgba_132.w;
|
lumaEndN_6 = rgba_132.w;
|
||||||
};
|
};
|
||||||
if (!(tmpvar_129)) {
|
if (!(tmpvar_129)) {
|
||||||
lowp vec4 tmpvar_133;
|
lowp vec4 tmpvar_133;
|
||||||
tmpvar_133 = texture2DLod (_MainTex, posP_7, 0.0);
|
tmpvar_133 = texture2DLodEXT (_MainTex, posP_7, 0.0);
|
||||||
highp vec4 rgba_134;
|
highp vec4 rgba_134;
|
||||||
rgba_134 = tmpvar_133;
|
rgba_134 = tmpvar_133;
|
||||||
lumaEndP_5 = rgba_134.w;
|
lumaEndP_5 = rgba_134.w;
|
||||||
|
@ -561,14 +561,14 @@ void main ()
|
||||||
if (tmpvar_137) {
|
if (tmpvar_137) {
|
||||||
if (!(tmpvar_135)) {
|
if (!(tmpvar_135)) {
|
||||||
lowp vec4 tmpvar_138;
|
lowp vec4 tmpvar_138;
|
||||||
tmpvar_138 = texture2DLod (_MainTex, posN_8, 0.0);
|
tmpvar_138 = texture2DLodEXT (_MainTex, posN_8, 0.0);
|
||||||
highp vec4 rgba_139;
|
highp vec4 rgba_139;
|
||||||
rgba_139 = tmpvar_138;
|
rgba_139 = tmpvar_138;
|
||||||
lumaEndN_6 = rgba_139.w;
|
lumaEndN_6 = rgba_139.w;
|
||||||
};
|
};
|
||||||
if (!(tmpvar_136)) {
|
if (!(tmpvar_136)) {
|
||||||
lowp vec4 tmpvar_140;
|
lowp vec4 tmpvar_140;
|
||||||
tmpvar_140 = texture2DLod (_MainTex, posP_7, 0.0);
|
tmpvar_140 = texture2DLodEXT (_MainTex, posP_7, 0.0);
|
||||||
highp vec4 rgba_141;
|
highp vec4 rgba_141;
|
||||||
rgba_141 = tmpvar_140;
|
rgba_141 = tmpvar_140;
|
||||||
lumaEndP_5 = rgba_141.w;
|
lumaEndP_5 = rgba_141.w;
|
||||||
|
@ -646,7 +646,7 @@ void main ()
|
||||||
posM_15.y = (xlv_TEXCOORD0.y + (tmpvar_152 * lengthSign_11));
|
posM_15.y = (xlv_TEXCOORD0.y + (tmpvar_152 * lengthSign_11));
|
||||||
};
|
};
|
||||||
lowp vec4 tmpvar_153;
|
lowp vec4 tmpvar_153;
|
||||||
tmpvar_153 = texture2DLod (_MainTex, posM_15, 0.0);
|
tmpvar_153 = texture2DLodEXT (_MainTex, posM_15, 0.0);
|
||||||
highp vec4 tmpvar_154;
|
highp vec4 tmpvar_154;
|
||||||
tmpvar_154.xyz = tmpvar_153.xyz;
|
tmpvar_154.xyz = tmpvar_153.xyz;
|
||||||
tmpvar_154.w = rgbyM_14.w;
|
tmpvar_154.w = rgbyM_14.w;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
archiveVersion = 1;
|
archiveVersion = 1;
|
||||||
classes = {
|
classes = {
|
||||||
};
|
};
|
||||||
objectVersion = 45;
|
objectVersion = 46;
|
||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
|
@ -135,8 +135,11 @@
|
||||||
/* Begin PBXProject section */
|
/* Begin PBXProject section */
|
||||||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
LastUpgradeCheck = 0460;
|
||||||
|
};
|
||||||
buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "glsl-optimizer-tests" */;
|
buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "glsl-optimizer-tests" */;
|
||||||
compatibilityVersion = "Xcode 3.1";
|
compatibilityVersion = "Xcode 3.2";
|
||||||
developmentRegion = English;
|
developmentRegion = English;
|
||||||
hasScannedForEncodings = 1;
|
hasScannedForEncodings = 1;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
|
@ -203,7 +206,6 @@
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
|
@ -228,12 +230,12 @@
|
||||||
ARCHS = i386;
|
ARCHS = i386;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
GCC_VERSION = 4.0;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
PREBINDING = NO;
|
SDKROOT = macosx;
|
||||||
SDKROOT = macosx10.4;
|
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
|
@ -242,15 +244,15 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ARCHS = i386;
|
ARCHS = i386;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_VERSION = 4.0;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
|
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
|
||||||
GCC_WARN_PROTOTYPE_CONVERSION = YES;
|
GCC_WARN_PROTOTYPE_CONVERSION = YES;
|
||||||
GCC_WARN_SHADOW = YES;
|
GCC_WARN_SHADOW = YES;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
PREBINDING = NO;
|
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||||
SDKROOT = macosx10.4;
|
SDKROOT = macosx;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
|
|
@ -156,6 +156,7 @@ static bool CheckGLSL (bool vertex, bool gles, const std::string& testName, cons
|
||||||
src += "#define highp\n";
|
src += "#define highp\n";
|
||||||
src += "#define texture2DLodEXT texture2DLod\n";
|
src += "#define texture2DLodEXT texture2DLod\n";
|
||||||
src += "#define texture2DProjLodEXT texture2DProjLod\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 shadow2DEXT (sampler2DShadow s, vec3 p) { return shadow2D(s,p).r; }\n";
|
||||||
src += "float shadow2DProjEXT (sampler2DShadow s, vec4 p) { return shadow2DProj(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, "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_OES_standard_derivatives : require", "", 0);
|
||||||
replace_string (src, "#extension GL_EXT_shadow_samplers : 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();
|
const char* sourcePtr = src.c_str();
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,9 @@
|
||||||
<Platform
|
<Platform
|
||||||
Name="Win32"
|
Name="Win32"
|
||||||
/>
|
/>
|
||||||
|
<Platform
|
||||||
|
Name="x64"
|
||||||
|
/>
|
||||||
</Platforms>
|
</Platforms>
|
||||||
<ToolFiles>
|
<ToolFiles>
|
||||||
</ToolFiles>
|
</ToolFiles>
|
||||||
|
@ -91,6 +94,82 @@
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</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
|
<Configuration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
OutputDirectory="build/$(ProjectName)/$(ConfigurationName)"
|
OutputDirectory="build/$(ProjectName)/$(ConfigurationName)"
|
||||||
|
@ -169,6 +248,85 @@
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</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>
|
</Configurations>
|
||||||
<References>
|
<References>
|
||||||
</References>
|
</References>
|
||||||
|
|
Двоичные данные
examples/runtime/shaders/dx11/fs_bump.bin
Двоичные данные
examples/runtime/shaders/dx11/fs_bump.bin
Двоичный файл не отображается.
Двоичные данные
examples/runtime/shaders/dx11/fs_mesh.bin
Двоичные данные
examples/runtime/shaders/dx11/fs_mesh.bin
Двоичный файл не отображается.
Двоичные данные
examples/runtime/shaders/dx11/fs_raymarching.bin
Двоичные данные
examples/runtime/shaders/dx11/fs_raymarching.bin
Двоичный файл не отображается.
Двоичные данные
examples/runtime/shaders/dx11/vs_bump.bin
Двоичные данные
examples/runtime/shaders/dx11/vs_bump.bin
Двоичный файл не отображается.
Двоичные данные
examples/runtime/shaders/dx11/vs_callback.bin
Двоичные данные
examples/runtime/shaders/dx11/vs_callback.bin
Двоичный файл не отображается.
Двоичные данные
examples/runtime/shaders/dx11/vs_cubes.bin
Двоичные данные
examples/runtime/shaders/dx11/vs_cubes.bin
Двоичный файл не отображается.
Двоичные данные
examples/runtime/shaders/dx11/vs_instancing.bin
Двоичные данные
examples/runtime/shaders/dx11/vs_instancing.bin
Двоичный файл не отображается.
Двоичные данные
examples/runtime/shaders/dx11/vs_mesh.bin
Двоичные данные
examples/runtime/shaders/dx11/vs_mesh.bin
Двоичный файл не отображается.
Двоичные данные
examples/runtime/shaders/dx11/vs_metaballs.bin
Двоичные данные
examples/runtime/shaders/dx11/vs_metaballs.bin
Двоичный файл не отображается.
Двоичные данные
examples/runtime/shaders/dx11/vs_raymarching.bin
Двоичные данные
examples/runtime/shaders/dx11/vs_raymarching.bin
Двоичный файл не отображается.
Двоичные данные
examples/runtime/shaders/dx11/vs_update.bin
Двоичные данные
examples/runtime/shaders/dx11/vs_update.bin
Двоичный файл не отображается.
Двоичные данные
tools/bin/shaderc.exe
Двоичные данные
tools/bin/shaderc.exe
Двоичный файл не отображается.
Загрузка…
Ссылка в новой задаче