[Bf-blender-cvs] [657d36c8b79] tmp-workbench-rewrite2: remove static GPUShaders
Miguel Pozo
noreply at git.blender.org
Mon Oct 31 18:27:51 CET 2022
Commit: 657d36c8b7964b021c2f81a2f43a6100f407d67f
Author: Miguel Pozo
Date: Mon Oct 31 17:53:59 2022 +0100
Branches: tmp-workbench-rewrite2
https://developer.blender.org/rB657d36c8b7964b021c2f81a2f43a6100f407d67f
remove static GPUShaders
===================================================================
M source/blender/draw/engines/workbench/workbench_mesh_passes.cc
M source/blender/draw/engines/workbench/workbench_private.hh
===================================================================
diff --git a/source/blender/draw/engines/workbench/workbench_mesh_passes.cc b/source/blender/draw/engines/workbench/workbench_mesh_passes.cc
index 11961b5ff8f..2fecd4af9a3 100644
--- a/source/blender/draw/engines/workbench/workbench_mesh_passes.cc
+++ b/source/blender/draw/engines/workbench/workbench_mesh_passes.cc
@@ -183,12 +183,12 @@ void TransparentPass::sync(const SceneState &scene_state, SceneResources &resour
accumulation_in_front_ps_.init_subpasses(
ePipelineType::TRANSPARENT, scene_state.shading_type, resources.shader_cache);
+ if (resolve_sh_ == nullptr) {
+ resolve_sh_ = GPU_shader_create_from_info_name("workbench_transparent_resolve");
+ }
resolve_ps_.init();
- /*TODO(Miguel Pozo): Use shaders.resolve_shader_get()*/
- static GPUShader *resolve_shader = GPU_shader_create_from_info_name(
- "workbench_transparent_resolve");
resolve_ps_.state_set(DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND_ALPHA);
- resolve_ps_.shader_set(resolve_shader);
+ resolve_ps_.shader_set(resolve_sh_);
resolve_ps_.bind_texture("transparentAccum", &accumulation_tx);
resolve_ps_.bind_texture("transparentRevealage", &reveal_tx);
resolve_ps_.draw_procedural(GPU_PRIM_TRIS, 1, 3);
@@ -245,10 +245,11 @@ void TransparentDepthPass::sync(const SceneState &scene_state, SceneResources &r
in_front_ps_.state_stencil(0xFF, 0xFF, 0x00);
in_front_ps_.init_subpasses(ePipelineType::OPAQUE, eShadingType::FLAT, resources.shader_cache);
+ if (merge_sh_ == nullptr) {
+ merge_sh_ = GPU_shader_create_from_info_name("workbench_next_merge_depth");
+ }
merge_ps_.init();
- /*TODO(Miguel Pozo): Use ShaderCache*/
- static GPUShader *merge_shader = GPU_shader_create_from_info_name("workbench_next_merge_depth");
- merge_ps_.shader_set(merge_shader);
+ merge_ps_.shader_set(merge_sh_);
merge_ps_.state_set(DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_ALWAYS | DRW_STATE_WRITE_STENCIL |
DRW_STATE_STENCIL_ALWAYS);
merge_ps_.state_stencil(0xFF, 0xFF, 0x00);
diff --git a/source/blender/draw/engines/workbench/workbench_private.hh b/source/blender/draw/engines/workbench/workbench_private.hh
index fcd57d2ea85..74d3afac1de 100644
--- a/source/blender/draw/engines/workbench/workbench_private.hh
+++ b/source/blender/draw/engines/workbench/workbench_private.hh
@@ -197,6 +197,9 @@ class OpaquePass {
};
class TransparentPass {
+ private:
+ GPUShader *resolve_sh_;
+
public:
TextureFromPool accumulation_tx = {"accumulation_accumulation_tx"};
TextureFromPool reveal_tx = {"accumulation_reveal_tx"};
@@ -215,6 +218,9 @@ class TransparentPass {
};
class TransparentDepthPass {
+ private:
+ GPUShader *merge_sh_;
+
public:
MeshPass main_ps_ = {"TransparentDepth.Main"};
Framebuffer main_fb = {"TransparentDepth.Main"};
More information about the Bf-blender-cvs
mailing list