Pixel-Composer/build/Windows/0/cache/sh_vertex_pnt_light.shader

50 lines
1.3 KiB
GLSL

//
// Simple passthrough vertex shader
//
attribute vec3 in_Position;
attribute vec3 in_Normal;
attribute vec2 in_TextureCoord;
varying vec2 v_vTexcoord;
varying float v_vNormalLight;
uniform vec3 u_LightForward;
void main() {
vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0);
vec3 world_space_norm = normalize(mat3(gm_Matrices[MATRIX_WORLD]) * in_Normal);
vec3 world_space_ligh = u_LightForward;
gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
float illumination = -dot(world_space_norm, world_space_ligh);
v_vTexcoord = in_TextureCoord;
v_vNormalLight = clamp(illumination, 0., 1.);
}
//######################_==_YOYO_SHADER_MARKER_==_######################@~
//
// Simple passthrough fragment shader
//
varying vec2 v_vTexcoord;
varying float v_vNormalLight;
uniform vec3 u_AmbientLight;
uniform vec3 u_LightColor;
uniform float u_LightIntensity;
uniform int useNormal;
void main() {
vec4 dif = texture2D( gm_BaseTexture, v_vTexcoord );
if(useNormal == 1) {
vec4 lig = dif * (u_LightIntensity * vec4(u_LightColor, 1.));
vec4 amb = dif * vec4(u_AmbientLight, 1.);
float intensity = min(v_vNormalLight * u_LightIntensity, 1.);
vec4 clr = mix(amb, lig, intensity);
clr.a = dif.a;
gl_FragColor = clr;
} else
gl_FragColor = dif;
}