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; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs