bgfx/3rdparty/glsl-optimizer/tests/fragment/unity-TreeCreatorLeavesRT-in.txt
Branimir Karadzic dee3fe5266 Initial commit.
2012-04-03 20:30:07 -07:00

66 lines
1.7 KiB
Text

void xll_clip(float x) {
if ( x<0.0 ) discard;
}
struct v2f {
vec4 pos;
vec2 uv;
vec3 color;
vec3 backContrib;
vec3 nl;
vec3 nh;
};
uniform sampler2D _BumpSpecMap;
uniform float _Cutoff;
uniform sampler2D _MainTex;
uniform vec4 _SpecColor;
uniform vec4 _TerrainTreeLightColors[4];
uniform vec3 _TranslucencyColor;
uniform sampler2D _TranslucencyMap;
vec4 frag( in v2f i ) {
vec4 col;
vec3 albedo;
float specular;
vec4 trngls;
float gloss;
vec3 light;
vec3 backContribs;
int j = 0;
vec3 lightColor;
vec3 translucencyColor;
float nl;
float nh;
float spec;
vec4 c;
col = texture2D( _MainTex, i.uv);
xll_clip( (col.w - _Cutoff) );
albedo = (col.xyz * i.color);
specular = (texture2D( _BumpSpecMap, i.uv).x * 128.000);
trngls = texture2D( _TranslucencyMap, i.uv);
gloss = trngls.w ;
light = (vec3( gl_LightModel.ambient) * albedo);
backContribs = (i.backContrib * trngls.z );
for ( ; (j < 3); ( j++ )) {
lightColor = _TerrainTreeLightColors[ j ].xyz ;
translucencyColor = (backContribs[ j ] * _TranslucencyColor);
nl = i.nl[ j ];
nh = i.nh[ j ];
spec = (pow( nh, specular) * gloss);
light += (((albedo * (translucencyColor + nl)) + (_SpecColor.xyz * spec)) * lightColor);
}
c.xyz = (light * 2.00000);
c.w = 1.00000;
return c;
}
void main() {
vec4 xl_retval;
v2f xlt_i;
xlt_i.pos = vec4(0.0);
xlt_i.uv = vec2( gl_TexCoord[0]);
xlt_i.color = vec3( gl_TexCoord[1]);
xlt_i.backContrib = vec3( gl_TexCoord[2]);
xlt_i.nl = vec3( gl_TexCoord[3]);
xlt_i.nh = vec3( gl_TexCoord[4]);
xl_retval = frag( xlt_i);
gl_FragData[0] = vec4( xl_retval);
}