[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