diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-10-09 12:19:54 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-10-09 13:12:38 +0300 |
commit | 9cf01d35be3a69aa162b4c5e24fe9a357f750aab (patch) | |
tree | 9510340ab84dfced7e9e54181cccf819818cf84d /source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl | |
parent | d4d6cbe0a77452cf828adeba0f796abd077b89e1 (diff) |
Workbench: Smoke: Add support for Color Mappping for smoke debugging
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl index 0860660d8da..5b949a6d952 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl @@ -11,6 +11,7 @@ uniform sampler3D densityTexture; uniform sampler3D shadowTexture; uniform sampler3D flameTexture; uniform sampler1D flameColorTexture; +uniform sampler1D transferTexture; uniform int samplesLen = 256; uniform float stepLength; /* Step length in local space. */ @@ -68,19 +69,25 @@ float line_unit_box_intersect_dist(vec3 lineorigin, vec3 linedirection) void volume_properties(vec3 ls_pos, out vec3 scattering, out float extinction) { vec3 co = ls_pos * 0.5 + 0.5; - +#ifdef USE_COBA + float val = texture(densityTexture, co).r; + vec4 tval = texture(transferTexture, val) * densityScale; + tval.rgb = pow(tval.rgb, vec3(2.2)); + scattering = tval.rgb * 1500.0; + extinction = max(1e-4, tval.a * 50.0); +#else float flame = texture(flameTexture, co).r; vec4 emission = texture(flameColorTexture, flame); - float shadows = texture(shadowTexture, co).r; vec4 density = texture(densityTexture, co); /* rgb: color, a: density */ - density.a *= densityScale; - scattering = density.rgb * density.a; + scattering = density.rgb * density.a * densityScale; extinction = max(1e-4, dot(scattering, vec3(0.33333))); + scattering *= shadows * M_PI; /* 800 is arbitrary and here to mimic old viewport. TODO make it a parameter */ - scattering += pow(emission.rgb, vec3(2.2)) * emission.a * 800.0f; + scattering += pow(emission.rgb, vec3(2.2)) * emission.a * 800.0; +#endif } void eval_volume_step(inout vec3 Lscat, float extinction, float step_len, out float Tr) |