[Bf-blender-cvs] [ae0c041c73b] temp-eevee-next-cryptomatte: Moving to single renderpass for cryptomatte.
Jeroen Bakker
noreply at git.blender.org
Mon Aug 22 15:49:48 CEST 2022
Commit: ae0c041c73b3a49cb886f12c1be315d8060f8f82
Author: Jeroen Bakker
Date: Mon Aug 22 13:38:39 2022 +0200
Branches: temp-eevee-next-cryptomatte
https://developer.blender.org/rBae0c041c73b3a49cb886f12c1be315d8060f8f82
Moving to single renderpass for cryptomatte.
===================================================================
M source/blender/draw/CMakeLists.txt
M source/blender/draw/engines/eevee_next/eevee_cryptomatte.cc
M source/blender/draw/engines/eevee_next/eevee_cryptomatte.hh
M source/blender/draw/engines/eevee_next/eevee_film.cc
M source/blender/draw/engines/eevee_next/eevee_instance.cc
M source/blender/draw/engines/eevee_next/eevee_renderbuffers.cc
M source/blender/draw/engines/eevee_next/eevee_shader.cc
M source/blender/draw/engines/eevee_next/eevee_shader.hh
M source/blender/draw/engines/eevee_next/eevee_sync.cc
M source/blender/draw/engines/eevee_next/eevee_view.cc
D source/blender/draw/engines/eevee_next/shaders/eevee_cryptomatte_frag.glsl
M source/blender/draw/engines/eevee_next/shaders/eevee_surf_forward_frag.glsl
D source/blender/draw/engines/eevee_next/shaders/infos/eevee_cryptomatte_info.hh
M source/blender/draw/engines/eevee_next/shaders/infos/eevee_material_info.hh
M source/blender/gpu/CMakeLists.txt
===================================================================
diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index 9142616ce25..d527da0582e 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -369,7 +369,6 @@ set(GLSL_SRC
engines/eevee_next/shaders/eevee_attributes_lib.glsl
engines/eevee_next/shaders/eevee_camera_lib.glsl
engines/eevee_next/shaders/eevee_colorspace_lib.glsl
- engines/eevee_next/shaders/eevee_cryptomatte_frag.glsl
engines/eevee_next/shaders/eevee_cryptomatte_lib.glsl
engines/eevee_next/shaders/eevee_depth_of_field_accumulator_lib.glsl
engines/eevee_next/shaders/eevee_depth_of_field_bokeh_lut_comp.glsl
diff --git a/source/blender/draw/engines/eevee_next/eevee_cryptomatte.cc b/source/blender/draw/engines/eevee_next/eevee_cryptomatte.cc
index 25f8a608a18..c69eb874949 100644
--- a/source/blender/draw/engines/eevee_next/eevee_cryptomatte.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_cryptomatte.cc
@@ -20,19 +20,6 @@ void Cryptomatte::init()
"Cryptomatte and film mismatch");
}
-void Cryptomatte::sync()
-{
- if (layer_len_ == 0) {
- return;
- }
-
- cryptomatte_ps_ = DRW_pass_create("Cryptomatte", DRW_STATE_WRITE_COLOR | DRW_STATE_DEPTH_EQUAL);
- GPUShader *sh_mesh = inst_.shaders.static_shader_get(CRYPTOMATTE_MESH);
- mesh_grp_ = DRW_shgroup_create(sh_mesh, cryptomatte_ps_);
- //GPUShader *sh_curves = inst_.shaders.static_shader_get(CRYPTOMATTE_CURVES);
- //hair_grp_ = DRW_shgroup_create(sh_curves, cryptomatte_ps_);
-}
-
static float hash_id(const ID *id)
{
const char *name = &id->name[2];
@@ -63,6 +50,8 @@ void Cryptomatte::add_hash(const ::Material *mat, float4 &r_hash) const
}
}
+#if 0
+Find API that works from the material shader. (fill object info and material data. with hashes if those layers are enabled?)
void Cryptomatte::sync_mesh(Object *ob)
{
if (layer_len_ == 0) {
@@ -109,25 +98,6 @@ void Cryptomatte::sync_mesh(Object *ob)
}
}
}
-
-void Cryptomatte::sync_curves(Object *ob, ModifierData *modifier_data)
-{
- if (layer_len_ == 0) {
- return;
- }
- BLI_assert_msg(false, "Not implemented yet");
-}
-
-void Cryptomatte::render()
-{
- if (layer_len_ == 0) {
- return;
- }
- const RenderBuffers &rbufs = inst_.render_buffers;
- cryptomatte_fb_.ensure(GPU_ATTACHMENT_TEXTURE(rbufs.depth_tx),
- GPU_ATTACHMENT_TEXTURE(rbufs.combined_tx));
- GPU_framebuffer_bind(cryptomatte_fb_);
- DRW_draw_pass(cryptomatte_ps_);
-}
+#endif
} // namespace blender::eevee
\ No newline at end of file
diff --git a/source/blender/draw/engines/eevee_next/eevee_cryptomatte.hh b/source/blender/draw/engines/eevee_next/eevee_cryptomatte.hh
index ea533c51cff..20ef3a0ea97 100644
--- a/source/blender/draw/engines/eevee_next/eevee_cryptomatte.hh
+++ b/source/blender/draw/engines/eevee_next/eevee_cryptomatte.hh
@@ -44,23 +44,12 @@ class Cryptomatte {
/** Number of enabled cryptomatte layers. */
int layer_len_;
- DRWPass *cryptomatte_ps_ = nullptr;
- Framebuffer cryptomatte_fb_ = {"cryptomatte"};
- DRWShadingGroup *mesh_grp_;
- DRWShadingGroup *hair_grp_;
-
public:
Cryptomatte(Instance &inst) : inst_(inst){};
~Cryptomatte(){};
void init();
- void sync();
- void sync_mesh(Object *ob);
- void sync_curves(Object *object, ModifierData *modifier_data);
- void sync_gpencil(); // TODO
- void render();
-
private:
void add_hash(const Object *object, float4 &r_hash) const;
void add_hash(const Material *material, float4 &r_hash) const;
diff --git a/source/blender/draw/engines/eevee_next/eevee_film.cc b/source/blender/draw/engines/eevee_next/eevee_film.cc
index 48f9d2ea4ff..0287c833edd 100644
--- a/source/blender/draw/engines/eevee_next/eevee_film.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_film.cc
@@ -642,7 +642,7 @@ float *Film::read_pass(eViewLayerEEVEEPassType pass_type)
bool is_value = pass_is_value(pass_type);
Texture &accum_tx = (pass_type == EEVEE_RENDER_PASS_COMBINED) ?
combined_tx_.current() :
- (pass_type == EEVEE_RENDER_PASS_Z) ?
+ (pass_type == EEVEE_RENDER_PASS_Z) ?
depth_tx_ :
(is_value ? value_accum_tx_ : color_accum_tx_);
diff --git a/source/blender/draw/engines/eevee_next/eevee_instance.cc b/source/blender/draw/engines/eevee_next/eevee_instance.cc
index fe399882bd7..bd0a6e351a2 100644
--- a/source/blender/draw/engines/eevee_next/eevee_instance.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_instance.cc
@@ -107,7 +107,6 @@ void Instance::begin_sync()
depth_of_field.sync();
motion_blur.sync();
- cryptomatte.sync();
hiz_buffer.sync();
pipelines.sync();
main_view.sync();
diff --git a/source/blender/draw/engines/eevee_next/eevee_renderbuffers.cc b/source/blender/draw/engines/eevee_next/eevee_renderbuffers.cc
index f92bd28034a..8f41b09d09c 100644
--- a/source/blender/draw/engines/eevee_next/eevee_renderbuffers.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_renderbuffers.cc
@@ -81,7 +81,11 @@ void RenderBuffers::acquire(int2 extent)
else if (cryptomatte_layer_len == 3) {
cryptomatte_format = GPU_RGBA32F;
}
- cryptomatte_tx.acquire(pass_extent(EEVEE_RENDER_PASS_CRYPTOMATTE), cryptomatte_format);
+ cryptomatte_tx.acquire(
+ pass_extent(static_cast<eViewLayerEEVEEPassType>(EEVEE_RENDER_PASS_CRYPTOMATTE_OBJECT |
+ EEVEE_RENDER_PASS_CRYPTOMATTE_ASSET |
+ EEVEE_RENDER_PASS_CRYPTOMATTE_MATERIAL)),
+ cryptomatte_format);
}
void RenderBuffers::release()
diff --git a/source/blender/draw/engines/eevee_next/eevee_shader.cc b/source/blender/draw/engines/eevee_next/eevee_shader.cc
index b62354dad8f..0e49b195ea2 100644
--- a/source/blender/draw/engines/eevee_next/eevee_shader.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_shader.cc
@@ -82,10 +82,6 @@ const char *ShaderModule::static_shader_create_info_name_get(eShaderType shader_
return "eevee_film_frag";
case FILM_COMP:
return "eevee_film_comp";
- case CRYPTOMATTE_CURVES:
- return "eevee_cryptomatte_curves";
- case CRYPTOMATTE_MESH:
- return "eevee_cryptomatte_mesh";
case HIZ_DEBUG:
return "eevee_hiz_debug";
case HIZ_UPDATE:
diff --git a/source/blender/draw/engines/eevee_next/eevee_shader.hh b/source/blender/draw/engines/eevee_next/eevee_shader.hh
index b0078b994a3..9ef42c84373 100644
--- a/source/blender/draw/engines/eevee_next/eevee_shader.hh
+++ b/source/blender/draw/engines/eevee_next/eevee_shader.hh
@@ -29,9 +29,6 @@ enum eShaderType {
FILM_FRAG = 0,
FILM_COMP,
- CRYPTOMATTE_CURVES,
- CRYPTOMATTE_MESH,
-
DOF_BOKEH_LUT,
DOF_DOWNSAMPLE,
DOF_FILTER,
diff --git a/source/blender/draw/engines/eevee_next/eevee_sync.cc b/source/blender/draw/engines/eevee_next/eevee_sync.cc
index 2abc4bcda95..e2d4b0ac1c2 100644
--- a/source/blender/draw/engines/eevee_next/eevee_sync.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_sync.cc
@@ -131,7 +131,6 @@ void SyncModule::sync_mesh(Object *ob, ObjectHandle &ob_handle)
is_alpha_blend = is_alpha_blend || material->is_alpha_blend_transparent;
}
- inst_.cryptomatte.sync_mesh(ob);
// shadows.sync_object(ob, ob_handle, is_shadow_caster, is_alpha_blend);
}
@@ -318,7 +317,6 @@ void SyncModule::sync_curves(Object *ob, ObjectHandle &ob_handle, ModifierData *
shgroup_curves_call(material.prepass, ob, part_sys, modifier_data);
shgroup_curves_call(material.shadow, ob, part_sys, modifier_data);
- inst_.cryptomatte.sync_curves(ob, modifier_data);
/* TODO(fclem) Hair velocity. */
// shading_passes.velocity.gpencil_add(ob, ob_handle);
diff --git a/source/blender/draw/engines/eevee_next/eevee_view.cc b/source/blender/draw/engines/eevee_next/eevee_view.cc
index 1002040c006..44067aff9ca 100644
--- a/source/blender/draw/engines/eevee_next/eevee_view.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_view.cc
@@ -135,8 +135,6 @@ void ShadingView::render()
inst_.lights.debug_draw(combined_fb_);
inst_.hiz_buffer.debug_draw(combined_fb_);
- inst_.cryptomatte.render();
-
GPUTexture *combined_final_tx = render_postfx(rbufs.combined_tx);
inst_.film.accumulate(sub_view_, combined_final_tx);
diff --git a/source/blender/draw/engines/eevee_next/shaders/eevee_cryptomatte_frag.glsl b/source/blender/draw/engines/eevee_next/shaders/eevee_cryptomatte_frag.glsl
deleted file mode 100644
index eaf30c08321..00000000000
--- a/source/blender/draw/engines/eevee_next/shaders/eevee_cryptomatte_frag.glsl
+++ /dev/null
@@ -1,3 +0,0 @@
-void main() {
- fragColor = cryptomatte_hash;
-}
\ No newline at end of file
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 9001a19bd15..46b2a39e7f6 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
@@ -106,7 +106,7 @@ void main()
imageStore(rp_diffuse_color_img, out_texel, vec4(g_diffuse_data.color, 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));
+ imageStore(rp_cryptomatte_img, out_texel, vec4(1.0, 0.5, 0.25, 1.0));
out_radiance.rgb *= 1.0 - g_holdout;
diff --git a/source/blender/draw/engines/eevee_next/shaders/infos/eevee_cryptomatte_info.hh b/source/blender/draw/engines/eevee_next/shaders/infos/eevee_cryptomatte_info.hh
deleted file mode 100644
index 26de5ac73b7..00000000000
--- a/source/blender/draw/engines/eevee_next/shaders/infos/eevee_cryptomatte_info.hh
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "gpu_shader_create_info.hh"
-
-GPU_SHADER_CREATE_INFO(eevee_cryptomatte)
- .fragment_source("eevee_cryptomatte_frag.glsl")
- .push_constant(Type::VEC4, "cryptomatte_hash")
- .fragment_out(0, Type::VEC4, "fragColor")
- .additiona
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list