mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-02-11 12:45:17 +01:00
50 lines
1.3 KiB
GLSL
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;
|
|
}
|
|
|