diff options
author | 3gg <3gg@shellblade.net> | 2025-06-27 10:18:39 -0700 |
---|---|---|
committer | 3gg <3gg@shellblade.net> | 2025-06-27 10:18:39 -0700 |
commit | bd57f345ed9dbed1d81683e48199626de2ea9044 (patch) | |
tree | 4221f2f2a7ad2244d2e93052bd68187ec91b8ea9 /shaders/view_normal_mapped_normals.frag | |
parent | 9a82ce0083437a4f9f58108b2c23b957d2249ad8 (diff) |
Diffstat (limited to 'shaders/view_normal_mapped_normals.frag')
-rw-r--r-- | shaders/view_normal_mapped_normals.frag | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/shaders/view_normal_mapped_normals.frag b/shaders/view_normal_mapped_normals.frag new file mode 100644 index 0000000..a372c02 --- /dev/null +++ b/shaders/view_normal_mapped_normals.frag | |||
@@ -0,0 +1,28 @@ | |||
1 | precision highp float; | ||
2 | |||
3 | uniform sampler2D NormalMap; | ||
4 | |||
5 | in vec3 Normal; | ||
6 | in vec4 Tangent; | ||
7 | in vec3 Bitangent; // TODO: Compute here or in PS? | ||
8 | in vec2 Texcoord; | ||
9 | |||
10 | out vec4 FragColour; | ||
11 | |||
12 | // TODO: Move to "normal.h" | ||
13 | vec3 get_vs_normal(vec3 normal, vec4 tangent, vec3 normalMapSample) { | ||
14 | vec3 N = normal; | ||
15 | // vec3 T = normalize(interpTangent - dot(tangent, N)*N); | ||
16 | // vec3 B = normalize(interpBitangent - dot(interpTangent, N)*N - dot(interpTangent, T)*T); | ||
17 | vec3 T = tangent.xyz; | ||
18 | //vec3 B = tangent.w * cross(N,T); | ||
19 | vec3 B = Bitangent; | ||
20 | vec3 n = normalMapSample; | ||
21 | return normalize(n.x*T + n.y*B + n.z*N); | ||
22 | } | ||
23 | |||
24 | void main() { | ||
25 | vec3 normalMapSample = texture(NormalMap, Texcoord).xyz * 2.0 - 1.0; | ||
26 | vec3 N = get_vs_normal(Normal, Tangent, normalMapSample); | ||
27 | FragColour = vec4(pow(N, vec3(1.0 / 2.2)), 1.0); | ||
28 | } | ||