diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-10-18 16:30:06 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-10-18 16:30:16 +0300 |
commit | 3e6b34dedef32dedd56213e555adc6dec147ba44 (patch) | |
tree | d8a1baaefff1509be4ba4d4a2b5273b0f3b54b54 /source/blender/gpu/shaders | |
parent | 6ef5bc1b99be97e60225fd643d4faff102063414 (diff) |
Eevee: Fix default texture coord for procedural texture in world tree
Diffstat (limited to 'source/blender/gpu/shaders')
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_material.glsl | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 7b4748056a7..e24cf8da989 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -1749,6 +1749,19 @@ void node_geometry( pointiness = 0.5; } +void generated_texco(vec3 I, vec3 attr_orco, out vec3 generated) +{ + vec4 v = (ProjectionMatrix[3][3] == 0.0) ? vec4(I, 1.0) : vec4(0.0, 0.0, 1.0, 1.0); + vec4 co_homogenous = (ProjectionMatrixInverse * v); + vec4 co = vec4(co_homogenous.xyz / co_homogenous.w, 0.0); + co.xyz = normalize(co.xyz); +#if defined(WORLD_BACKGROUND) || defined(PROBE_CAPTURE) + generated = (ViewMatrixInverse * co).xyz; +#else + generated_from_orco(attr_orco, generated); +#endif +} + void node_tex_coord( vec3 I, vec3 N, mat4 viewinvmat, mat4 obinvmat, vec4 camerafac, vec3 attr_orco, vec3 attr_uv, |