[Bf-blender-cvs] [6ffc4982b85] temp-eevee-next-cryptomatte: Eevee-next: move towords single draw.
Jeroen Bakker
noreply at git.blender.org
Mon Aug 22 15:49:48 CEST 2022
Commit: 6ffc4982b85450e466ec381af0ba3e9f445453d5
Author: Jeroen Bakker
Date: Fri Aug 12 14:25:25 2022 +0200
Branches: temp-eevee-next-cryptomatte
https://developer.blender.org/rB6ffc4982b85450e466ec381af0ba3e9f445453d5
Eevee-next: move towords single draw.
===================================================================
M source/blender/draw/engines/eevee_next/eevee_pipeline.cc
M source/blender/draw/engines/eevee_next/shaders/eevee_nodetree_lib.glsl
M source/blender/draw/engines/eevee_next/shaders/eevee_surf_forward_frag.glsl
M source/blender/draw/engines/eevee_next/shaders/eevee_surf_world_frag.glsl
M source/blender/draw/engines/eevee_next/shaders/infos/eevee_material_info.hh
===================================================================
diff --git a/source/blender/draw/engines/eevee_next/eevee_pipeline.cc b/source/blender/draw/engines/eevee_next/eevee_pipeline.cc
index 4be6613792d..93e9f418d88 100644
--- a/source/blender/draw/engines/eevee_next/eevee_pipeline.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_pipeline.cc
@@ -126,6 +126,7 @@ DRWShadingGroup *ForwardPipeline::material_opaque_add(::Material *blender_mat, G
DRW_shgroup_uniform_image_ref(grp, "rp_specular_light_img", &rbufs.specular_light_tx);
DRW_shgroup_uniform_image_ref(grp, "rp_specular_color_img", &rbufs.specular_color_tx);
DRW_shgroup_uniform_image_ref(grp, "rp_emission_img", &rbufs.emission_tx);
+ DRW_shgroup_uniform_image_ref(grp, "rp_cryptomatte_img", &rbufs.cryptomatte_tx);
/* TODO(fclem): Make this only needed if material uses it ... somehow. */
// if (true) {
@@ -208,6 +209,7 @@ DRWShadingGroup *ForwardPipeline::material_transparent_add(::Material *blender_m
DRW_shgroup_uniform_image_ref(grp, "rp_specular_light_img", &rbufs.specular_light_tx);
DRW_shgroup_uniform_image_ref(grp, "rp_specular_color_img", &rbufs.specular_color_tx);
DRW_shgroup_uniform_image_ref(grp, "rp_emission_img", &rbufs.emission_tx);
+ DRW_shgroup_uniform_image_ref(grp, "rp_cryptomatte_img", &rbufs.cryptomatte_tx);
}
DRWState state_disable = DRW_STATE_WRITE_DEPTH;
diff --git a/source/blender/draw/engines/eevee_next/shaders/eevee_nodetree_lib.glsl b/source/blender/draw/engines/eevee_next/shaders/eevee_nodetree_lib.glsl
index c488216eeac..9d527d688c9 100644
--- a/source/blender/draw/engines/eevee_next/shaders/eevee_nodetree_lib.glsl
+++ b/source/blender/draw/engines/eevee_next/shaders/eevee_nodetree_lib.glsl
@@ -261,6 +261,11 @@ void output_aov(vec4 color, float value, uint hash)
#endif
}
+void output_cryptomatte(float object_hash, float asset_hash, float material_hash) {
+#if defined(GPU_FRAGMENT_SHADER)
+#endif
+}
+
#ifdef EEVEE_MATERIAL_STUBS
# define attrib_load()
# define nodetree_displacement() vec3(0.0)
diff --git a/source/blender/draw/engines/eevee_next/shaders/eevee_surf_forward_frag.glsl b/source/blender/draw/engines/eevee_next/shaders/eevee_surf_forward_frag.glsl
index 48ced4e5374..076c6d81c64 100644
--- a/source/blender/draw/engines/eevee_next/shaders/eevee_surf_forward_frag.glsl
+++ b/source/blender/draw/engines/eevee_next/shaders/eevee_surf_forward_frag.glsl
@@ -89,6 +89,7 @@ void main()
imageStore(rp_specular_light_img, out_texel, vec4(specular_light, 1.0));
imageStore(rp_specular_color_img, out_texel, vec4(specular_color, 1.0));
imageStore(rp_emission_img, out_texel, vec4(g_emission, 1.0));
+ imageStore(rp_cryptomatte_img, out_texel, vec4(cryptomatte_object_hash, cryptomatte_asset_hash, 0.0, 1.0));
out_radiance.rgb *= 1.0 - g_holdout;
diff --git a/source/blender/draw/engines/eevee_next/shaders/eevee_surf_world_frag.glsl b/source/blender/draw/engines/eevee_next/shaders/eevee_surf_world_frag.glsl
index ed75282a550..e8d08df824f 100644
--- a/source/blender/draw/engines/eevee_next/shaders/eevee_surf_world_frag.glsl
+++ b/source/blender/draw/engines/eevee_next/shaders/eevee_surf_world_frag.glsl
@@ -31,6 +31,7 @@ void main()
imageStore(rp_specular_light_img, out_texel, vec4(0.0, 0.0, 0.0, 1.0));
imageStore(rp_specular_color_img, out_texel, vec4(0.0, 0.0, 0.0, 1.0));
imageStore(rp_emission_img, out_texel, vec4(0.0, 0.0, 0.0, 1.0));
+ imageStore(rp_cryptomatte_img, out_texel, vec4(0.0));
out_background.rgb = safe_color(g_emission) * (1.0 - g_holdout);
out_background.a = saturate(avg(g_transmittance)) * g_holdout;
diff --git a/source/blender/draw/engines/eevee_next/shaders/infos/eevee_material_info.hh b/source/blender/draw/engines/eevee_next/shaders/infos/eevee_material_info.hh
index db3cfc4a7a2..7f6dbf2cecf 100644
--- a/source/blender/draw/engines/eevee_next/shaders/infos/eevee_material_info.hh
+++ b/source/blender/draw/engines/eevee_next/shaders/infos/eevee_material_info.hh
@@ -80,6 +80,11 @@ GPU_SHADER_CREATE_INFO(eevee_aov_out)
.image_array_out(7, Qualifier::WRITE, GPU_R16F, "aov_value_img")
.storage_buf(7, Qualifier::READ, "AOVsInfoData", "aov_buf");
+GPU_SHADER_CREATE_INFO(eevee_cryptomatte_out)
+ .push_constant(Type::FLOAT, "cryptomatte_object_hash")
+ .push_constant(Type::FLOAT, "cryptomatte_asset_hash")
+ .image_out(8, Qualifier::WRITE, GPU_RGBA32F, "rp_cryptomatte_img");
+
GPU_SHADER_CREATE_INFO(eevee_surf_deferred)
.vertex_out(eevee_surf_iface)
/* NOTE: This removes the possibility of using gl_FragDepth. */
@@ -116,7 +121,7 @@ GPU_SHADER_CREATE_INFO(eevee_surf_forward)
.image_out(3, Qualifier::READ_WRITE, GPU_RGBA16F, "rp_specular_light_img")
.image_out(4, Qualifier::READ_WRITE, GPU_RGBA16F, "rp_specular_color_img")
.image_out(5, Qualifier::READ_WRITE, GPU_RGBA16F, "rp_emission_img")
- .additional_info("eevee_aov_out"
+ .additional_info("eevee_aov_out", "eevee_cryptomatte_out"
// "eevee_sampling_data",
// "eevee_lightprobe_data",
/* Optionally added depending on the material. */
@@ -144,7 +149,7 @@ GPU_SHADER_CREATE_INFO(eevee_surf_world)
.push_constant(Type::FLOAT, "world_opacity_fade")
.fragment_out(0, Type::VEC4, "out_background")
.fragment_source("eevee_surf_world_frag.glsl")
- .additional_info("eevee_aov_out"
+ .additional_info("eevee_aov_out", "eevee_cryptomatte_out"
//"eevee_utility_texture"
);
More information about the Bf-blender-cvs
mailing list