Skip to content

Commit 4c3e25c

Browse files
authored
Merge pull request #329 from furudbat/feature/issue-299-shader-unmanged
Add ShaderUnmanaged
2 parents 59ab49a + 514bf04 commit 4c3e25c

23 files changed

+1490
-135
lines changed
457 KB
Binary file not shown.
1.12 KB
Binary file not shown.
1.61 MB
Loading
1.73 KB
Loading
1.08 MB
Loading
1.23 MB
Loading
623 KB
Loading
657 KB
Loading
645 KB
Loading
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#version 100
2+
3+
precision mediump float;
4+
5+
// Input vertex attributes (from vertex shader)
6+
varying vec3 fragPosition;
7+
varying vec2 fragTexCoord;
8+
varying vec4 fragColor;
9+
varying vec3 fragNormal;
10+
11+
// Input uniform values
12+
uniform sampler2D texture0;
13+
uniform vec4 colDiffuse;
14+
15+
// NOTE: Add here your custom variables
16+
17+
#define MAX_LIGHTS 4
18+
#define LIGHT_DIRECTIONAL 0
19+
#define LIGHT_POINT 1
20+
21+
struct Light {
22+
int enabled;
23+
int type;
24+
vec3 position;
25+
vec3 target;
26+
vec4 color;
27+
};
28+
29+
// Input lighting values
30+
uniform Light lights[MAX_LIGHTS];
31+
uniform vec4 ambient;
32+
uniform vec3 viewPos;
33+
34+
void main()
35+
{
36+
// Texel color fetching from texture sampler
37+
vec4 texelColor = texture2D(texture0, fragTexCoord);
38+
vec3 lightDot = vec3(0.0);
39+
vec3 normal = normalize(fragNormal);
40+
vec3 viewD = normalize(viewPos - fragPosition);
41+
vec3 specular = vec3(0.0);
42+
43+
// NOTE: Implement here your fragment shader code
44+
45+
for (int i = 0; i < MAX_LIGHTS; i++)
46+
{
47+
if (lights[i].enabled == 1)
48+
{
49+
vec3 light = vec3(0.0);
50+
51+
if (lights[i].type == LIGHT_DIRECTIONAL)
52+
{
53+
light = -normalize(lights[i].target - lights[i].position);
54+
}
55+
56+
if (lights[i].type == LIGHT_POINT)
57+
{
58+
light = normalize(lights[i].position - fragPosition);
59+
}
60+
61+
float NdotL = max(dot(normal, light), 0.0);
62+
lightDot += lights[i].color.rgb*NdotL;
63+
64+
float specCo = 0.0;
65+
if (NdotL > 0.0) specCo = pow(max(0.0, dot(viewD, reflect(-(light), normal))), 16.0); // 16 refers to shine
66+
specular += specCo;
67+
}
68+
}
69+
70+
vec4 finalColor = (texelColor*((colDiffuse + vec4(specular, 1.0))*vec4(lightDot, 1.0)));
71+
finalColor += texelColor*(ambient/10.0);
72+
73+
// Gamma correction
74+
gl_FragColor = pow(finalColor, vec4(1.0/2.2));
75+
}

0 commit comments

Comments
 (0)