diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2018-04-25 12:54:02 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2018-04-25 12:54:02 +0300 |
commit | 8f76d05fa59124275f2dbd4aafdc8f46e6fe77a3 (patch) | |
tree | 81277d4774d459630b9279defcd35e86e8370ecc /source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl | |
parent | 83528feeed3697ac0b76acd27f4a11f1466379b1 (diff) |
Workbench: GLSL performance + code style
- store normal in vec2
- use rgba_8 for colorBuffer
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl b/source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl index fbe4f556b30..8b03b058301 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl @@ -12,3 +12,24 @@ float bayer_dither_noise() { ivec2 tx2 = ivec2(gl_FragCoord.xy) % 2; return dither_mat4x4[tx1.x][tx1.y]; } + +/* From http://aras-p.info/texts/CompactNormalStorage.html + * Using Method #4: Spheremap Transform */ +vec3 normal_decode(vec2 enc) +{ + vec2 fenc = enc * 4.0 - 2.0; + float f = dot(fenc, fenc); + float g = sqrt(1.0 - f / 4.0); + vec3 n; + n.xy = fenc*g; + n.z = 1 - f / 2; + return n; +} + +/* From http://aras-p.info/texts/CompactNormalStorage.html + * Using Method #4: Spheremap Transform */ +vec2 normal_encode(vec3 n) +{ + float p = sqrt(n.z * 8.0 + 8.0); + return n.xy / p + 0.5; +} |