Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2021-05-03 17:35:36 +0300
committerClément Foucault <foucault.clem@gmail.com>2021-05-03 17:35:36 +0300
commit4500a90cdc5ea54a92c4ea2333413df056f81b1e (patch)
tree009cfe71fc72ed1387c0bc3c90f6190d21d0be85 /source/blender/draw/engines/eevee/shaders/eevee_surface_deferred_frag.glsl
parent99a5d49a3814b507e9ef7f4a5e3da7a4570cd951 (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.glsl29
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