diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2021-05-03 17:35:36 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2021-05-03 17:35:36 +0300 |
commit | 4500a90cdc5ea54a92c4ea2333413df056f81b1e (patch) | |
tree | 009cfe71fc72ed1387c0bc3c90f6190d21d0be85 /source/blender/draw/engines/eevee/shaders/eevee_surface_deferred_frag.glsl | |
parent | 99a5d49a3814b507e9ef7f4a5e3da7a4570cd951 (diff) |
EEVEE: Implementation of volume rendering
This adds the transparency and volume handling in the deferred
render pipeline.
Implementation is still unfinished.
To have better naming convention, I renamed object shader to surface.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/eevee_surface_deferred_frag.glsl')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/eevee_surface_deferred_frag.glsl | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/eevee_surface_deferred_frag.glsl b/source/blender/draw/engines/eevee/shaders/eevee_surface_deferred_frag.glsl new file mode 100644 index 00000000000..d120baa12df --- /dev/null +++ b/source/blender/draw/engines/eevee/shaders/eevee_surface_deferred_frag.glsl @@ -0,0 +1,29 @@ + +#pragma BLENDER_REQUIRE(common_view_lib.glsl) +#pragma BLENDER_REQUIRE(common_math_lib.glsl) +#pragma BLENDER_REQUIRE(eevee_surface_lib.glsl) +#pragma BLENDER_REQUIRE(eevee_gbuffer_lib.glsl) +#pragma BLENDER_REQUIRE(eevee_nodetree_eval_lib.glsl) + +layout(location = 0) out uvec4 out_diffuse_data; /* Diffuse BSDF, BSSSDF, Translucency. */ +layout(location = 1) out uvec2 out_reflection_data; /* Glossy BSDF. */ +layout(location = 2) out uvec4 out_refraction_data; /* Refraction BSDF. */ +layout(location = 3) out uvec4 out_volume_data; /* Volume Emission, Absorption, Scatter. */ +layout(location = 4) out vec4 out_emission_data; /* Emission. */ +layout(location = 5) out vec4 out_transparency_data; /* Transparent BSDF, Holdout. */ + +SurfaceData g_surf; + +void main(void) +{ + g_surf = init_from_interp(); + + nodetree_eval(g_surf.N); + + out_diffuse_data = gbuffer_store_diffuse_data(g_diffuse_data); + out_reflection_data = gbuffer_store_reflection_data(g_reflection_data); + out_refraction_data = gbuffer_store_refraction_data(g_refraction_data); + out_volume_data = gbuffer_store_volume_data(g_volume_data); + out_emission_data = gbuffer_store_emission_data(g_emission_data); + out_transparency_data = gbuffer_store_transparency_data(g_transparency_data); +}
\ No newline at end of file |