Changeset 139 for trunk/tests/objload_test/obj.frag
- Timestamp:
- 06/29/13 20:32:29 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/objload_test/obj.frag
r137 r139 1 1 #version 120 2 varying vec2 f_texcoord; 3 varying float f_diffuse_value; 4 uniform sampler2D tex; 2 3 uniform sampler2D diffuse; 4 uniform sampler2D specular; 5 uniform vec4 light_diffuse; 6 uniform vec4 light_specular; 7 uniform vec3 custom_color_1; 8 uniform vec3 custom_color_2; 9 10 varying vec2 v_texcoord; 11 varying vec3 v_normal; 12 varying vec3 v_light_vector; 13 varying vec3 v_view_vector; 5 14 6 15 void main(void) { 7 gl_FragColor = vec4( texture2D( tex, f_texcoord ).rgb * f_diffuse_value, 1.0 ); 16 vec3 nnormal = normalize( v_normal ); 17 vec3 nlight_vector = normalize( v_light_vector ); 18 vec3 nview_vector = normalize( v_view_vector ); 19 vec3 nreflect_vector = reflect( -nlight_vector, nnormal ); 20 21 float specular_value = clamp( dot( nreflect_vector, nview_vector ), 0.0, 1.0 ); 22 specular_value = pow( specular_value, 6.0 ); 23 float diffuse_value = max( dot( nlight_vector, nnormal ), 0.0 ); 24 25 vec3 diff_texel = vec3( texture2D( diffuse, v_texcoord ) ); 26 vec4 spec_texel = texture2D( specular, v_texcoord ); 27 28 float specular_amount = spec_texel.x; 29 float diffuse_amount = 1.0 - specular_amount; 30 31 vec3 custom_color = (custom_color_1 * (1.0-spec_texel.z) + custom_color_2 * (1.0-spec_texel.a))*0.4; 32 33 float final_specular = specular_amount * specular_value; 34 float final_diffuse = diffuse_amount * diffuse_value; 35 36 vec3 self_ilum_color = spec_texel.y * diff_texel; 37 vec3 diffuse_color = light_diffuse.xyz * final_diffuse * clamp( diff_texel + custom_color, 0.0, 1.0 ); 38 vec3 specular_color = light_specular.xyz * final_specular; 39 40 gl_FragColor = vec4( max( self_ilum_color, diffuse_color + specular_color), 1.0 ); 8 41 }
Note: See TracChangeset
for help on using the changeset viewer.