bgfx/3rdparty/glsl-optimizer/tests/vertex/loops-for-withvec4inductorW-inES3.txt

87 lines
4.3 KiB
Text
Raw Normal View History

2015-04-03 02:30:48 -04:00
#version 300 es
// This was produced at one point from Unity's Reflect/VertexLit
// shader's "Vertex Lit, emulated in shaders" pass by hlslcc.
// Loop analysis was not detecting that Temp_int[0] is used as
// both a loop induction variable (.w component) and for other uses
// outside the loop.
precision highp float;
uniform vec4 unity_LightColor[8];
uniform vec4 unity_LightPosition[8];
uniform vec4 unity_LightAtten[8];
uniform vec4 unity_SpotDirection[8];
uniform mat4 glstate_matrix_mvp;
uniform mat4 glstate_matrix_modelview0;
uniform mat4 glstate_matrix_invtrans_modelview0;
uniform mat4 _Object2World;
uniform mat4 _World2Object;
uniform vec4 glstate_lightmodel_ambient;
uniform vec4 _MainTex_ST;
uniform vec4 _Color;
uniform vec4 _ReflectColor;
in highp vec4 in_POSITION0;
vec4 Input0;
in highp vec4 in_NORMAL0;
vec4 Input1;
in highp vec4 in_TEXCOORD0;
vec4 Input2;
out highp vec4 TEXCOORD0;
#define Output0 TEXCOORD0
out highp vec4 COLOR0;
#define Output1 COLOR0
#undef Output2
#define Output2 phase0_Output2
vec4 phase0_Output2;
vec4 Temp[4];
ivec4 Temp_int[4];
void main()
{
Input0 = in_POSITION0;
Input1 = in_NORMAL0;
Input2 = in_TEXCOORD0;
Temp_int[0] = floatBitsToInt(Input0.yyyy * glstate_matrix_mvp[1]);
Temp_int[0] = floatBitsToInt(glstate_matrix_mvp[0] * Input0.xxxx + intBitsToFloat(Temp_int[0]));
Temp_int[0] = floatBitsToInt(glstate_matrix_mvp[2] * Input0.zzzz + intBitsToFloat(Temp_int[0]));
Output2 = glstate_matrix_mvp[3] * Input0.wwww + intBitsToFloat(Temp_int[0]);
Output0.xy = Input2.xy * _MainTex_ST.xy + _MainTex_ST.zw;
Temp_int[0].xyz = floatBitsToInt(Input0.yyy * glstate_matrix_modelview0[1].xyz);
Temp_int[0].xyz = floatBitsToInt(glstate_matrix_modelview0[0].xyz * Input0.xxx + intBitsToFloat(Temp_int[0]).xyz);
Temp_int[0].xyz = floatBitsToInt(glstate_matrix_modelview0[2].xyz * Input0.zzz + intBitsToFloat(Temp_int[0]).xyz);
Temp_int[0].xyz = floatBitsToInt(glstate_matrix_modelview0[3].xyz * Input0.www + intBitsToFloat(Temp_int[0]).xyz);
Temp_int[1].xyz = floatBitsToInt(Input1.yyy * glstate_matrix_invtrans_modelview0[1].xyz);
Temp_int[1].xyz = floatBitsToInt(glstate_matrix_invtrans_modelview0[0].xyz * Input1.xxx + intBitsToFloat(Temp_int[1]).xyz);
Temp_int[1].xyz = floatBitsToInt(glstate_matrix_invtrans_modelview0[2].xyz * Input1.zzz + intBitsToFloat(Temp_int[1]).xyz);
Temp_int[0].w = floatBitsToInt(dot(intBitsToFloat(Temp_int[1]).xyz, intBitsToFloat(Temp_int[1]).xyz));
Temp_int[0].w = floatBitsToInt(inversesqrt(intBitsToFloat(Temp_int[0]).w));
Temp_int[1].xyz = floatBitsToInt(intBitsToFloat(Temp_int[0]).www * intBitsToFloat(Temp_int[1]).xyz);
Temp[2].xyz = glstate_lightmodel_ambient.xyz;
Temp_int[0].w = 0x0;
while(true){
if ((Temp_int[0].w>= 0x4)) { break; }
Temp_int[1].w = int((Temp_int[0].w>=0x4) ? 0xFFFFFFFFu : 0u);
Temp[3].xyz = (-intBitsToFloat(Temp_int[0]).xyz) * unity_LightPosition[Temp_int[0].w + 0].www + unity_LightPosition[Temp_int[0].w + 0].xyz;
Temp_int[1].w = floatBitsToInt(dot(Temp[3].xyz, Temp[3].xyz));
Temp[2].w = inversesqrt(intBitsToFloat(Temp_int[1]).w);
Temp[3].xyz = Temp[2].www * Temp[3].xyz;
Temp_int[1].w = floatBitsToInt(intBitsToFloat(Temp_int[1]).w * unity_LightAtten[Temp_int[0].w + 0].z + intBitsToFloat(0x3F800000));
Temp_int[1].w = floatBitsToInt(float(intBitsToFloat(0x3F800000)) / intBitsToFloat(Temp_int[1]).w);
Temp[2].w = dot(Temp[3].xyz, unity_SpotDirection[Temp_int[0].w + 0].xyz);
Temp[2].w = max(Temp[2].w, intBitsToFloat(0x0));
Temp[2].w = Temp[2].w + (-unity_LightAtten[Temp_int[0].w + 0].x);
Temp[2].w = Temp[2].w * unity_LightAtten[Temp_int[0].w + 0].y;
Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);
Temp_int[1].w = floatBitsToInt(intBitsToFloat(Temp_int[1]).w * Temp[2].w);
Temp[2].w = dot(intBitsToFloat(Temp_int[1]).xyz, Temp[3].xyz);
Temp[2].w = max(Temp[2].w, intBitsToFloat(0x0));
Temp_int[1].w = floatBitsToInt(intBitsToFloat(Temp_int[1]).w * Temp[2].w);
Temp[2].xyz = unity_LightColor[Temp_int[0].w + 0].xyz * intBitsToFloat(Temp_int[1]).www + Temp[2].xyz;
Temp_int[0].w = Temp_int[0].w + 0x1;
}
Output1.xyz = Temp[2].xyz * _Color.xyz;
Output1.w = _Color.w * _ReflectColor.w;
gl_Position = vec4(phase0_Output2);
return;
}