GameObjects
Began to add GameObjects, starting with the player.
This commit is contained in:
71
wall.frag
Normal file
71
wall.frag
Normal file
@@ -0,0 +1,71 @@
|
||||
#version 330 core
|
||||
out vec4 FragColor;
|
||||
|
||||
uniform vec3 lightColor;
|
||||
uniform vec3 lightPos;
|
||||
uniform vec3 viewPos;
|
||||
|
||||
uniform sampler2D diffuseTexture;
|
||||
uniform samplerCube depthMap;
|
||||
|
||||
uniform float far_plane;
|
||||
uniform bool shadows;
|
||||
|
||||
uniform vec3 iResolution; // viewport resolution (in pixels)
|
||||
uniform float iTime; // shader playback time (in seconds)
|
||||
uniform float iTimeDelta; // render time (in seconds)
|
||||
uniform float iFrameRate; // shader frame rate
|
||||
uniform int iFrame; // shader playback frame
|
||||
uniform float iChannelTime[4]; // channel playback time (in seconds)
|
||||
uniform vec3 iChannelResolution[4]; // channel resolution (in pixels)
|
||||
uniform vec4 iMouse; // mouse pixel coords. xy: current (if MLB down), zw: click
|
||||
uniform sampler2D iChannel0; // input channel. XX = 2D/Cube
|
||||
uniform vec4 iDate; // (year, month, day, time in seconds)
|
||||
|
||||
in vec3 FragPos;
|
||||
in vec3 Normal;
|
||||
in vec3 Color;
|
||||
|
||||
float ShadowCalculation(vec3 fragPos)
|
||||
{
|
||||
// get vector between fragment position and light position
|
||||
vec3 fragToLight = fragPos - lightPos;
|
||||
// ise the fragment to light vector to sample from the depth map
|
||||
float closestDepth = texture(depthMap, fragToLight).r;
|
||||
// it is currently in linear range between [0,1], let's re-transform it back to original depth value
|
||||
closestDepth *= far_plane;
|
||||
// now get current linear depth as the length between the fragment and light position
|
||||
float currentDepth = length(fragToLight);
|
||||
// test for shadows
|
||||
float bias = 0.05; // we use a much larger bias since depth is now in [near_plane, far_plane] range
|
||||
float shadow = currentDepth - bias > closestDepth ? 1.0 : 0.0;
|
||||
// display closestDepth as debug (to visualize depth cubemap)
|
||||
//FragColor = vec4(vec3(closestDepth / far_plane), 1.0);
|
||||
|
||||
return shadow;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//vec3 color = texture(diffuseTexture, FragPos.xy).rgb;
|
||||
vec3 normal = normalize(Normal);
|
||||
vec3 lightColor = vec3(0.3);
|
||||
// ambient
|
||||
vec3 ambient = 0.3 * lightColor;
|
||||
// diffuse
|
||||
vec3 lightDir = normalize(lightPos - FragPos);
|
||||
float diff = max(dot(lightDir, normal), 0.0);
|
||||
vec3 diffuse = diff * lightColor;
|
||||
// specular
|
||||
vec3 viewDir = normalize(viewPos - FragPos);
|
||||
vec3 reflectDir = reflect(-lightDir, normal);
|
||||
float spec = 0.0;
|
||||
vec3 halfwayDir = normalize(lightDir + viewDir);
|
||||
spec = pow(max(dot(normal, halfwayDir), 0.0), 64.0);
|
||||
vec3 specular = spec * lightColor;
|
||||
// calculate shadow
|
||||
float shadow = ShadowCalculation(FragPos);
|
||||
vec3 lighting = (ambient + (1.0 - shadow) * (diffuse + specular)) * Color;
|
||||
|
||||
FragColor = vec4(lighting, 1.0);
|
||||
}
|
||||
Reference in New Issue
Block a user