[Bf-blender-cvs] [eec714350fa] tmp-workbench-rewrite2: Merge branch 'master' into tmp-workbench-rewrite2

Miguel Pozo noreply at git.blender.org
Mon Nov 28 21:22:27 CET 2022


Commit: eec714350fa71ff3e486df907ce9acc99ce394cc
Author: Miguel Pozo
Date:   Mon Nov 28 21:18:56 2022 +0100
Branches: tmp-workbench-rewrite2
https://developer.blender.org/rBeec714350fa71ff3e486df907ce9acc99ce394cc

Merge branch 'master' into tmp-workbench-rewrite2

# Conflicts:
#	release/scripts/startup/bl_ui/space_userpref.py
#	source/blender/draw/CMakeLists.txt
#	source/blender/draw/engines/workbench/workbench_materials.cc
#	source/blender/makesdna/DNA_userdef_types.h

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



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

diff --cc release/scripts/startup/bl_ui/space_userpref.py
index 66213c12d97,11f5fdaa348..2f8a4768884
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@@ -2317,8 -2319,6 +2319,7 @@@ class USERPREF_PT_experimental_prototyp
                  ({"property": "use_sculpt_texture_paint"}, "T96225"),
                  ({"property": "use_full_frame_compositor"}, "T88150"),
                  ({"property": "enable_eevee_next"}, "T93220"),
 +                ({"property": "enable_workbench_next"}, ""),
-                 ({"property": "use_draw_manager_acquire_lock"}, "T98016"),
              ),
          )
  
diff --cc source/blender/draw/CMakeLists.txt
index b2317025199,140354f5888..92d7d133f2f
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@@ -156,25 -158,15 +158,25 @@@ set(SR
    engines/eevee_next/eevee_world.cc
    engines/workbench/workbench_data.c
    engines/workbench/workbench_effect_antialiasing.c
 +  engines/workbench/workbench_effect_antialiasing.cc
    engines/workbench/workbench_effect_cavity.c
 +  engines/workbench/workbench_effect_cavity.cc
    engines/workbench/workbench_effect_dof.c
 +  engines/workbench/workbench_effect_dof.cc
    engines/workbench/workbench_effect_outline.c
 +  engines/workbench/workbench_effect_outline.cc
    engines/workbench/workbench_engine.c
 +  engines/workbench/workbench_engine.cc
-   engines/workbench/workbench_materials.c
    engines/workbench/workbench_materials.cc
++  engines/workbench/workbench_materials_next.cc
 +  engines/workbench/workbench_mesh_passes.cc
    engines/workbench/workbench_opaque.c
    engines/workbench/workbench_render.c
 +  engines/workbench/workbench_resources.cc
    engines/workbench/workbench_shader.cc
 +  engines/workbench/workbench_shader_cache.cc
    engines/workbench/workbench_shadow.c
 +  engines/workbench/workbench_state.cc
    engines/workbench/workbench_transparent.c
    engines/workbench/workbench_volume.c
    engines/external/external_engine.c
diff --cc source/blender/draw/engines/workbench/shaders/infos/workbench_merge_infront_info.hh
index 03dd3a266e4,8322d6891b7..56ad367451d
--- a/source/blender/draw/engines/workbench/shaders/infos/workbench_merge_infront_info.hh
+++ b/source/blender/draw/engines/workbench/shaders/infos/workbench_merge_infront_info.hh
@@@ -7,10 -7,5 +7,11 @@@ GPU_SHADER_CREATE_INFO(workbench_merge_
      .sampler(0, ImageType::DEPTH_2D, "depthBuffer")
      .fragment_source("workbench_merge_infront_frag.glsl")
      .additional_info("draw_fullscreen")
+     .depth_write(DepthWrite::ANY)
      .do_static_compilation(true);
 +
 +GPU_SHADER_CREATE_INFO(workbench_next_merge_depth)
 +    .sampler(0, ImageType::DEPTH_2D, "depth_tx")
 +    .fragment_source("workbench_next_merge_depth_frag.glsl")
 +    .additional_info("draw_fullscreen")
 +    .do_static_compilation(true);
diff --cc source/blender/draw/engines/workbench/workbench_materials_next.cc
index 00000000000,00000000000..6e4085b584e
new file mode 100644
--- /dev/null
+++ b/source/blender/draw/engines/workbench/workbench_materials_next.cc
@@@ -1,0 -1,0 +1,94 @@@
++/* SPDX-License-Identifier: GPL-2.0-or-later */
++
++#include "workbench_private.hh"
++
++#include "BLI_hash.h"
++/* get_image */
++#include "DNA_node_types.h"
++#include "ED_uvedit.h"
++//#include "BKE_image.h"
++#include "BKE_node.h"
++/* get_image */
++
++namespace blender::workbench {
++
++Material::Material() = default;
++
++Material::Material(float3 color)
++{
++  base_color = color;
++  packed_data = Material::pack_data(0.0f, 0.4f, 1.0f);
++}
++
++Material::Material(::Object &ob, bool random)
++{
++  if (random) {
++    uint hash = BLI_ghashutil_strhash_p_murmur(ob.id.name);
++    if (ob.id.lib) {
++      hash = (hash * 13) ^ BLI_ghashutil_strhash_p_murmur(ob.id.lib->filepath);
++    }
++    float3 hsv = float3(BLI_hash_int_01(hash), 0.5f, 0.8f);
++    hsv_to_rgb_v(hsv, base_color);
++  }
++  else {
++    base_color = ob.color;
++  }
++  packed_data = Material::pack_data(0.0f, 0.4f, ob.color[3]);
++}
++
++Material::Material(::Material &mat)
++{
++  base_color = &mat.r;
++  packed_data = Material::pack_data(mat.metallic, mat.roughness, mat.a);
++}
++
++bool Material::is_transparent()
++{
++  uint32_t full_alpha_ref = 0x00ff0000;
++  return (packed_data & full_alpha_ref) != full_alpha_ref;
++}
++
++uint32_t Material::pack_data(float metallic, float roughness, float alpha)
++{
++  /* Remap to Disney roughness. */
++  roughness = sqrtf(roughness);
++  uint32_t packed_roughness = unit_float_to_uchar_clamp(roughness);
++  uint32_t packed_metallic = unit_float_to_uchar_clamp(metallic);
++  uint32_t packed_alpha = unit_float_to_uchar_clamp(alpha);
++  return (packed_alpha << 16u) | (packed_roughness << 8u) | packed_metallic;
++}
++
++void get_material_image(Object *ob,
++                        int material_index,
++                        ::Image *&image,
++                        ImageUser *&iuser,
++                        eGPUSamplerState &sampler_state)
++{
++  const ::bNode *node = nullptr;
++
++  ED_object_get_active_image(ob, material_index, &image, &iuser, &node, nullptr);
++  if (node && image) {
++    switch (node->type) {
++      case SH_NODE_TEX_IMAGE: {
++        NodeTexImage *storage = static_cast<NodeTexImage *>(node->storage);
++        const bool use_filter = (storage->interpolation != SHD_INTERP_CLOSEST);
++        const bool use_repeat = (storage->extension == SHD_IMAGE_EXTENSION_REPEAT);
++        const bool use_clip = (storage->extension == SHD_IMAGE_EXTENSION_CLIP);
++        SET_FLAG_FROM_TEST(sampler_state, use_filter, GPU_SAMPLER_FILTER);
++        SET_FLAG_FROM_TEST(sampler_state, use_repeat, GPU_SAMPLER_REPEAT);
++        SET_FLAG_FROM_TEST(sampler_state, use_clip, GPU_SAMPLER_CLAMP_BORDER);
++        break;
++      }
++      case SH_NODE_TEX_ENVIRONMENT: {
++        NodeTexEnvironment *storage = static_cast<NodeTexEnvironment *>(node->storage);
++        const bool use_filter = (storage->interpolation != SHD_INTERP_CLOSEST);
++        SET_FLAG_FROM_TEST(sampler_state, use_filter, GPU_SAMPLER_FILTER);
++        break;
++      }
++      default:
++        BLI_assert_msg(0, "Node type not supported by workbench");
++    }
++  }
++}
++
++}  // namespace blender::workbench
diff --cc source/blender/makesdna/DNA_userdef_types.h
index 1bd93988714,911f139e54f..ff4d53868a4
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@@ -651,10 -651,7 +651,9 @@@ typedef struct UserDef_Experimental 
    char use_override_templates;
    char enable_eevee_next;
    char use_sculpt_texture_paint;
-   char use_draw_manager_acquire_lock;
    char use_realtime_compositor;
 +  char enable_workbench_next;
-   char _pad[6];
++  char _pad[7];
    /** `makesdna` does not allow empty structs. */
  } UserDef_Experimental;



More information about the Bf-blender-cvs mailing list