bgfx/3rdparty/glsl-optimizer/tests/vertex/loops-forlimitbreak-outES3Metal.txt
2015-07-28 20:04:55 -07:00

85 lines
2.3 KiB
Text

#include <metal_stdlib>
using namespace metal;
struct xlatMtlShaderInput {
float4 _glesVertex [[attribute(0)]];
float3 _glesNormal [[attribute(1)]];
};
struct xlatMtlShaderOutput {
float4 gl_Position [[position]];
half4 xlv_COLOR0;
};
struct xlatMtlShaderUniform {
half4 unity_LightColor[8];
float4 unity_LightPosition[8];
int4 unity_VertexLightParams;
};
vertex xlatMtlShaderOutput xlatMtlMain (xlatMtlShaderInput _mtl_i [[stage_in]], constant xlatMtlShaderUniform& _mtl_u [[buffer(0)]])
{
xlatMtlShaderOutput _mtl_o;
float3 tmpvar_1;
tmpvar_1 = _mtl_i._glesVertex.xyz;
int j_2;
int j_3;
int il_4;
half3 lcolor_5;
half3 eyeNormal_6;
half4 color_7;
half4 tmpvar_8;
color_7 = half4(float4(0.0, 0.0, 0.0, 1.1));
eyeNormal_6 = half3(_mtl_i._glesNormal);
lcolor_5 = half3(float3(0.0, 0.0, 0.0));
il_4 = 0;
while (true) {
float tmpvar_9;
tmpvar_9 = min (8.0, float(_mtl_u.unity_VertexLightParams.x));
if ((float(il_4) >= tmpvar_9)) {
break;
};
float3 tmpvar_10;
tmpvar_10 = _mtl_u.unity_LightPosition[il_4].xyz;
half3 dirToLight_11;
dirToLight_11 = half3(tmpvar_10);
lcolor_5 = (lcolor_5 + min ((
(max (dot (eyeNormal_6, dirToLight_11), (half)0.0) * _mtl_u.unity_LightColor[il_4].xyz)
* (half)0.5), (half3)float3(1.0, 1.0, 1.0)));
il_4++;
};
color_7.xyz = lcolor_5;
j_3 = 0;
while (true) {
float tmpvar_12;
tmpvar_12 = min (float(_mtl_u.unity_VertexLightParams.y), 4.0);
if ((j_3 >= int(tmpvar_12))) {
break;
};
color_7.xyz = (color_7.xyz + _mtl_u.unity_LightColor[j_3].xyz);
j_3++;
};
j_2 = 0;
while (true) {
int tmpvar_13;
tmpvar_13 = min (_mtl_u.unity_VertexLightParams.y, 4);
if ((j_2 >= tmpvar_13)) {
break;
};
color_7.xyz = (color_7.xyz * _mtl_u.unity_LightColor[j_2].xyz);
j_2++;
};
tmpvar_8 = color_7;
float4 tmpvar_14;
tmpvar_14.w = 1.0;
tmpvar_14.xyz = tmpvar_1;
_mtl_o.xlv_COLOR0 = tmpvar_8;
_mtl_o.gl_Position = tmpvar_14;
return _mtl_o;
}
// stats: 27 alu 0 tex 6 flow
// inputs: 2
// #0: _glesVertex (high float) 4x1 [-1] loc 0
// #1: _glesNormal (high float) 3x1 [-1] loc 1
// uniforms: 3 (total size: 208)
// #0: unity_LightColor (medium float) 4x1 [8] loc 0
// #1: unity_LightPosition (high float) 4x1 [8] loc 64
// #2: unity_VertexLightParams (high int) 4x1 [-1] loc 192