bgfx/3rdparty/glsl-optimizer/tests/vertex/bug-swizzle-lhs-cast-inES3.txt
2014-10-11 12:32:43 -07:00

53 lines
1.5 KiB
Text

#version 300 es
// Metal translation was producing a wrong typecast
// on o.backContrib[j] = (backContrib * 2.0) expression;
// was thinking LHS is a float3
#define gl_Vertex _glesVertex
in vec4 _glesVertex;
#define gl_Normal _glesNormal
in vec3 _glesNormal;
float xll_saturate_f( float x) {
return clamp( x, 0.0, 1.0);
}
struct appdata_full {
highp vec4 vertex;
highp vec3 normal;
};
struct v2f {
highp vec4 pos;
highp vec3 backContrib;
};
uniform highp vec3 _WorldSpaceCameraPos;
uniform highp mat4 glstate_matrix_mvp;
uniform highp mat4 _World2Object;
uniform highp vec3 _TerrainTreeLightDirections[4];
highp vec3 ObjSpaceViewDir( in highp vec4 v ) {
highp vec3 objSpaceCameraPos = (_World2Object * vec4( _WorldSpaceCameraPos.xyz, 1.0)).xyz;
return (objSpaceCameraPos - v.xyz);
}
v2f vert( in appdata_full v ) {
v2f o;
o.pos = (glstate_matrix_mvp * v.vertex);
highp vec3 viewDir = normalize(ObjSpaceViewDir( v.vertex));
highp int j = 0;
for ( ; (j < 3); (j++)) {
highp vec3 lightDir = _TerrainTreeLightDirections[j];
mediump float nl = dot( v.normal, lightDir);
mediump float backContrib = xll_saturate_f(dot( viewDir, (-lightDir)));
o.backContrib[j] = (backContrib * 2.0);
}
return o;
}
out highp vec3 xlv_TEXCOORD2;
void main() {
v2f xl_retval;
appdata_full xlt_v;
xlt_v.vertex = vec4(gl_Vertex);
xlt_v.normal = vec3(gl_Normal);
xl_retval = vert( xlt_v);
gl_Position = vec4(xl_retval.pos);
xlv_TEXCOORD2 = vec3(xl_retval.backContrib);
}