Skip to content

Commit fdbd7e6

Browse files
committed
braindump shader thoughts
1 parent 8305444 commit fdbd7e6

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
#define LINEAR_TO_RGB(r, g, b) vec3(pow(##r, 2.2), pow(##g, 2.2), pow(##b, 2.2))
2+
// https://github.com/godotengine/godot/issues/70927
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// https://blog.selfshadow.com/publications/blending-in-detail/
2+
3+
// Returns a world-space Tangent Bitangent Normal matrix
4+
// https://gamedev.stackexchange.com/questions/178606/how-to-calculate-normal-from-normal-map-in-world-space-opengl
5+
mat3 world_normal_matrix(
6+
in mat3 model_normal_matrix, in vec3 model_tangent,
7+
in vec3 model_binormal, in vec3 model_normal
8+
) {
9+
vec3 T = normalize(vec3(model_normal_matrix * model_tangent));
10+
vec3 B = normalize(vec3(model_normal_matrix * model_binormal));
11+
vec3 N = normalize(vec3(model_normal_matrix * model_normal));
12+
return mat3(T, B, N);
13+
}
14+
15+
vec3 parse_normal_map(in vec3 normal_map_value, in mat3 tbn) {
16+
return normalize(tbn * normalize(fma(normal_map_value, vec3(2.0), vec3(-1.0))));
17+
}
18+
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// Remaps a value from a given range to a new range
22
float remap(in float value, in float in_min, in float in_max, in float out_min, in float out_max) {
3-
return out_min + (value - in_min) * ((out_max - out_min) / (in_max - in_min));
3+
return fma(value - in_min, (out_max - out_min) / (in_max - in_min), out_min);
44
}
55
// Remaps a value from 0 to 1 to a new range
66
float remap_fast(in float value, in float minimum, in float maximum) {
7-
return minimum + value * (maximum - minimum);
7+
return fma(value, maximum - minimum, minimum);
88
}

0 commit comments

Comments
 (0)