[Bf-blender-cvs] [5178cfd6d4d] temp-eevee-next-cryptomatte: Merge branch 'master' into temp-eevee-next-cryptomatte

Jeroen Bakker noreply at git.blender.org
Mon Aug 22 15:49:48 CEST 2022


Commit: 5178cfd6d4d36e27d3148f29e366f506166d131e
Author: Jeroen Bakker
Date:   Mon Aug 22 09:52:37 2022 +0200
Branches: temp-eevee-next-cryptomatte
https://developer.blender.org/rB5178cfd6d4d36e27d3148f29e366f506166d131e

Merge branch 'master' into temp-eevee-next-cryptomatte

===================================================================



===================================================================

diff --cc source/blender/draw/engines/eevee_next/eevee_instance.cc
index 2f2326c1534,d28eb55c3b1..fe399882bd7
--- a/source/blender/draw/engines/eevee_next/eevee_instance.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_instance.cc
@@@ -107,7 -106,7 +107,8 @@@ void Instance::begin_sync(
  
    depth_of_field.sync();
    motion_blur.sync();
 +  cryptomatte.sync();
+   hiz_buffer.sync();
    pipelines.sync();
    main_view.sync();
    world.sync();
diff --cc source/blender/draw/engines/eevee_next/eevee_instance.hh
index 68fab49baf5,cc3d1c32fde..ef65b1c327b
--- a/source/blender/draw/engines/eevee_next/eevee_instance.hh
+++ b/source/blender/draw/engines/eevee_next/eevee_instance.hh
@@@ -16,9 -16,9 +16,10 @@@
  #include "DRW_render.h"
  
  #include "eevee_camera.hh"
 +#include "eevee_cryptomatte.hh"
  #include "eevee_depth_of_field.hh"
  #include "eevee_film.hh"
+ #include "eevee_hizbuffer.hh"
  #include "eevee_light.hh"
  #include "eevee_material.hh"
  #include "eevee_motion_blur.hh"
@@@ -49,7 -49,7 +50,8 @@@ class Instance 
    VelocityModule velocity;
    MotionBlurModule motion_blur;
    DepthOfField depth_of_field;
 +  Cryptomatte cryptomatte;
+   HiZBuffer hiz_buffer;
    Sampling sampling;
    Camera camera;
    Film film;
@@@ -90,7 -90,7 +92,8 @@@
          velocity(*this),
          motion_blur(*this),
          depth_of_field(*this),
 +        cryptomatte(*this),
+         hiz_buffer(*this),
          sampling(*this),
          camera(*this),
          film(*this),
diff --cc source/blender/draw/engines/eevee_next/eevee_pipeline.cc
index a95ba5f942e,d9ac39f4fb9..0b8246abe2c
--- a/source/blender/draw/engines/eevee_next/eevee_pipeline.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_pipeline.cc
@@@ -43,12 -43,10 +43,11 @@@ void WorldPipeline::sync(GPUMaterial *g
    DRW_shgroup_storage_block_ref(grp, "aov_buf", &inst_.film.aovs_info);
    /* RenderPasses. Cleared by background (even if bad practice). */
    DRW_shgroup_uniform_image_ref(grp, "rp_normal_img", &rbufs.normal_tx);
-   DRW_shgroup_uniform_image_ref(grp, "rp_diffuse_light_img", &rbufs.diffuse_light_tx);
+   DRW_shgroup_uniform_image_ref(grp, "rp_light_img", &rbufs.light_tx);
    DRW_shgroup_uniform_image_ref(grp, "rp_diffuse_color_img", &rbufs.diffuse_color_tx);
-   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);
    /* To allow opaque pass rendering over it. */
    DRW_shgroup_barrier(grp, GPU_BARRIER_SHADER_IMAGE_ACCESS);
  }
@@@ -123,12 -121,10 +122,11 @@@ DRWShadingGroup *ForwardPipeline::mater
    DRW_shgroup_storage_block_ref(grp, "aov_buf", &inst_.film.aovs_info);
    /* RenderPasses. */
    DRW_shgroup_uniform_image_ref(grp, "rp_normal_img", &rbufs.normal_tx);
-   DRW_shgroup_uniform_image_ref(grp, "rp_diffuse_light_img", &rbufs.diffuse_light_tx);
+   DRW_shgroup_uniform_image_ref(grp, "rp_light_img", &rbufs.light_tx);
    DRW_shgroup_uniform_image_ref(grp, "rp_diffuse_color_img", &rbufs.diffuse_color_tx);
-   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,12 -204,10 +206,11 @@@ DRWShadingGroup *ForwardPipeline::mater
      DRW_shgroup_storage_block_ref(grp, "aov_buf", &inst_.film.aovs_info);
      /* RenderPasses. */
      DRW_shgroup_uniform_image_ref(grp, "rp_normal_img", &rbufs.normal_tx);
-     DRW_shgroup_uniform_image_ref(grp, "rp_diffuse_light_img", &rbufs.diffuse_light_tx);
+     DRW_shgroup_uniform_image_ref(grp, "rp_light_img", &rbufs.light_tx);
      DRW_shgroup_uniform_image_ref(grp, "rp_diffuse_color_img", &rbufs.diffuse_color_tx);
-     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 --cc source/blender/draw/engines/eevee_next/eevee_renderbuffers.hh
index 69fa47c1feb,0b761d618cc..ae5d7fbae5c
--- a/source/blender/draw/engines/eevee_next/eevee_renderbuffers.hh
+++ b/source/blender/draw/engines/eevee_next/eevee_renderbuffers.hh
@@@ -37,8 -35,9 +35,9 @@@ class RenderBuffers 
    TextureFromPool environment_tx;
    TextureFromPool shadow_tx;
    TextureFromPool ambient_occlusion_tx;
 -  // TextureFromPool cryptomatte_tx; /* TODO */
 +  TextureFromPool cryptomatte_tx;
    /* TODO(fclem): Use texture from pool once they support texture array. */
+   Texture light_tx;
    Texture aov_color_tx;
    Texture aov_value_tx;
  
diff --cc source/blender/draw/engines/eevee_next/eevee_shader.cc
index cec5a7e90eb,0e49b195ea2..b62354dad8f
--- a/source/blender/draw/engines/eevee_next/eevee_shader.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_shader.cc
@@@ -82,10 -82,10 +82,14 @@@ const char *ShaderModule::static_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:
+       return "eevee_hiz_update";
      case MOTION_BLUR_GATHER:
        return "eevee_motion_blur_gather";
      case MOTION_BLUR_TILE_DILATE:
diff --cc source/blender/draw/engines/eevee_next/eevee_view.cc
index 840073c22f8,44067aff9ca..1002040c006
--- a/source/blender/draw/engines/eevee_next/eevee_view.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_view.cc
@@@ -128,13 -130,11 +130,13 @@@ void ShadingView::render(
  
    // inst_.lookdev.render_overlay(view_fb_);
  
-   inst_.pipelines.forward.render(
-       render_view_, prepass_fb_, combined_fb_, rbufs.depth_tx, rbufs.combined_tx);
+   inst_.pipelines.forward.render(render_view_, prepass_fb_, combined_fb_, rbufs.combined_tx);
  
    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 --cc source/blender/draw/engines/eevee_next/shaders/eevee_surf_forward_frag.glsl
index 4c96c7560e2,3f2349b30a1..9001a19bd15
--- 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
@@@ -99,12 -99,13 +99,14 @@@ void main(
  
    ivec2 out_texel = ivec2(gl_FragCoord.xy);
    imageStore(rp_normal_img, out_texel, vec4(out_normal, 1.0));
-   imageStore(rp_diffuse_light_img, out_texel, vec4(diffuse_light, 1.0));
+   imageStore(
+       rp_light_img, ivec3(out_texel, RENDER_PASS_LAYER_DIFFUSE_LIGHT), vec4(diffuse_light, 1.0));
+   imageStore(
+       rp_light_img, ivec3(out_texel, RENDER_PASS_LAYER_SPECULAR_LIGHT), vec4(specular_light, 1.0));
    imageStore(rp_diffuse_color_img, out_texel, vec4(g_diffuse_data.color, 1.0));
-   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 --cc source/blender/draw/engines/eevee_next/shaders/eevee_surf_world_frag.glsl
index e8d08df824f,1ef1c1f84b8..442c2579c84
--- 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
@@@ -26,12 -26,13 +26,14 @@@ void main(
  
    ivec2 out_texel = ivec2(gl_FragCoord.xy);
    imageStore(rp_normal_img, out_texel, vec4(0.0, 0.0, 0.0, 1.0));
-   imageStore(rp_diffuse_light_img, out_texel, vec4(0.0, 0.0, 0.0, 1.0));
+   imageStore(
+       rp_light_img, ivec3(out_texel, RENDER_PASS_LAYER_DIFFUSE_LIGHT), vec4(0.0, 0.0, 0.0, 1.0));
+   imageStore(
+       rp_light_img, ivec3(out_texel, RENDER_PASS_LAYER_SPECULAR_LIGHT), vec4(0.0, 0.0, 0.0, 1.0));
    imageStore(rp_diffuse_color_img, out_texel, vec4(0.0, 0.0, 0.0, 1.0));
-   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 --cc source/blender/draw/engines/eevee_next/shaders/infos/eevee_film_info.hh
index 4db8f86da0b,c94171db6a9..98ef502750d
--- a/source/blender/draw/engines/eevee_next/shaders/infos/eevee_film_info.hh
+++ b/source/blender/draw/engines/eevee_next/shaders/infos/eevee_film_info.hh
@@@ -9,20 -9,19 +9,19 @@@ GPU_SHADER_CREATE_INFO(eevee_film
      .sampler(1, ImageType::FLOAT_2D, "combined_tx")
      .sampler(2, ImageType::FLOAT_2D, "normal_tx")
      .sampler(3, ImageType::FLOAT_2D, "vector_tx")
-     .sampler(4, ImageType::FLOAT_2D, "diffuse_light_tx")
+     .sampler(4, ImageType::FLOAT_2D_ARRAY, "light_tx")
      .sampler(5, ImageType::FLOAT_2D, "diffuse_color_tx")
-     .sampler(6, ImageType::FLOAT_2D, "specular_light_tx")
-     .sampler(7, ImageType::FLOAT_2D, "specular_color_tx")
-     .sampler(8, ImageType::FLOAT_2D, "volume_light_tx")
-     .sampler(9, ImageType::FLOAT_2D, "emission_tx")
-     .sampler(10, ImageType::FLOAT_2D, "environme

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list