|
Blender V5.0
|
#include <eevee_shadow.hh>
Public Member Functions | |
| ~ShadowModule () | |
| void | set_lights_data () |
| template<typename PassType> | |
| void | bind_resources (PassType &pass) |
| const ShadowSceneData & | get_data () |
| float | global_lod_bias () const |
| void | reset () |
Public Attributes | |
| ShadowTileMapPool | tilemap_pool |
| Pool< ShadowPunctual > | punctual_pool |
| Pool< ShadowDirectional > | directional_pool |
Static Public Attributes | |
| static ShadowTechnique | shadow_technique = ShadowTechnique::ATOMIC_RASTER |
Shadow Module | |
| ShadowModule (Instance &inst, ShadowSceneData &data) | |
| void | init () |
| void | begin_sync () |
| void | sync_object (const Object *ob, const ObjectHandle &handle, const ResourceHandleRange &resource_handle, bool is_alpha_blend, bool has_transparent_shadows) |
| void | end_sync () |
| void | set_view (View &view, int2 extent) |
| void | debug_end_sync () |
| void | debug_draw (View &view, gpu::FrameBuffer *view_fb) |
| static float | screen_pixel_radius (const float4x4 &wininv, bool is_perspective, const int2 &extent) |
Definition at line 196 of file eevee_shadow.hh.
| blender::eevee::ShadowModule::ShadowModule | ( | Instance & | inst, |
| ShadowSceneData & | data ) |
Definition at line 563 of file eevee_shadow.cc.
References data, i, and UNUSED_VARS.
|
inline |
Definition at line 355 of file eevee_shadow.hh.
References GPU_BATCH_DISCARD_SAFE.
| void blender::eevee::ShadowModule::begin_sync | ( | ) |
Definition at line 678 of file eevee_shadow.cc.
References blender::draw::detail::PassBase< DrawCommandBufType >::bind_resources(), blender::draw::detail::PassBase< DrawCommandBufType >::bind_ssbo(), blender::draw::detail::PassBase< DrawCommandBufType >::bind_texture(), blender::draw::Manager::bounds_buf, blender::draw::detail::PassBase< DrawCommandBufType >::dispatch(), DRW_STATE_CULL_FRONT, DRW_STATE_WRITE_STENCIL, float, blender::draw::detail::PassBase< DrawCommandBufType >::framebuffer_set(), GPU_batch_unit_cube(), blender::draw::detail::Pass< DrawCommandBufType >::init(), log2, blender::draw::detail::PassBase< DrawCommandBufType >::push_constant(), blender::draw::detail::PassBase< DrawCommandBufType >::shader_set(), SHADOW_PAGE_RES, blender::eevee::SHADOW_TILEMAP_TAG_USAGE_OPAQUE, blender::eevee::SHADOW_TILEMAP_TAG_USAGE_SURFELS, blender::eevee::SHADOW_TILEMAP_TAG_USAGE_TRANSPARENT, blender::draw::detail::PassBase< DrawCommandBufType >::state_set(), blender::draw::detail::PassBase< DrawCommandBufType >::state_stencil(), blender::draw::detail::PassBase< DrawCommandBufType >::sub(), blender::eevee::ShadowDirectional::tile_size_get(), and tilemap_pool.
|
inline |
Definition at line 383 of file eevee_shadow.hh.
References SHADOW_ATLAS_TEX_SLOT, SHADOW_TILEMAPS_TEX_SLOT, and tilemap_pool.
| void blender::eevee::ShadowModule::debug_draw | ( | View & | view, |
| gpu::FrameBuffer * | view_fb ) |
Definition at line 1402 of file eevee_shadow.cc.
References blender::eevee::DEBUG_SHADOW_TILE_RANDOM_COLOR, blender::eevee::DEBUG_SHADOW_TILEMAP_RANDOM_COLOR, blender::eevee::DEBUG_SHADOW_TILEMAPS, blender::eevee::DEBUG_SHADOW_VALUES, ELEM, GPU_framebuffer_bind(), and view.
| void blender::eevee::ShadowModule::debug_end_sync | ( | ) |
Definition at line 1105 of file eevee_shadow.cc.
References blender::eevee::DEBUG_SHADOW_TILE_RANDOM_COLOR, blender::eevee::DEBUG_SHADOW_TILEMAP_RANDOM_COLOR, blender::eevee::DEBUG_SHADOW_TILEMAPS, blender::eevee::DEBUG_SHADOW_VALUES, DEG_get_original(), DRW_STATE_BLEND_CUSTOM, DRW_STATE_WRITE_COLOR, DRW_STATE_WRITE_DEPTH, ELEM, GPU_PRIM_TRIS, blender::eevee::SHADOW_DEBUG, SHADOW_MAX_TILEMAP, state, and tilemap_pool.
Referenced by end_sync().
| void blender::eevee::ShadowModule::end_sync | ( | ) |
Clear pages that need to be rendered.
Definition at line 794 of file eevee_shadow.cc.
References blender::draw::detail::PassBase< DrawCommandBufType >::barrier(), blender::draw::detail::PassBase< DrawCommandBufType >::bind_image(), blender::draw::detail::PassBase< DrawCommandBufType >::bind_resources(), blender::draw::detail::PassBase< DrawCommandBufType >::bind_ssbo(), blender::draw::Manager::bounds_buf, debug_end_sync(), blender::draw::detail::PassBase< DrawCommandBufType >::dispatch(), blender::math::divide_ceil(), divide_ceil_u(), DRW_STATE_DEPTH_ALWAYS, DRW_STATE_WRITE_DEPTH, blender::draw::detail::PassBase< DrawCommandBufType >::framebuffer_set(), GPU_BARRIER_SHADER_IMAGE_ACCESS, GPU_BARRIER_SHADER_STORAGE, GPU_BARRIER_TEXTURE_FETCH, GPU_BARRIER_UNIFORM, GPU_storagebuf_clear(), i, blender::draw::detail::Pass< DrawCommandBufType >::init(), LIGHT_NO_SHADOW, blender::draw::detail::PassBase< DrawCommandBufType >::push_constant(), blender::draw::ResourceHandleRange::raw(), blender::eevee::ShadowObject::resource_handle, blender::draw::detail::PassBase< DrawCommandBufType >::shader_set(), SHADOW_BOUNDS_GROUP_SIZE, blender::eevee::SHADOW_CLIPMAP_CLEAR, SHADOW_CLIPMAP_GROUP_SIZE, SHADOW_MAX_PAGE, blender::eevee::SHADOW_PAGE_ALLOCATE, blender::eevee::SHADOW_PAGE_CLEAR, blender::eevee::SHADOW_PAGE_DEFRAG, blender::eevee::SHADOW_PAGE_FREE, blender::eevee::SHADOW_PAGE_MASK, blender::eevee::shadow_page_pack(), SHADOW_PAGE_PER_COL, SHADOW_PAGE_PER_LAYER, SHADOW_PAGE_PER_ROW, shadow_technique, blender::eevee::SHADOW_TILEMAP_AMEND, blender::eevee::SHADOW_TILEMAP_BOUNDS, blender::eevee::SHADOW_TILEMAP_FINALIZE, blender::eevee::SHADOW_TILEMAP_INIT, blender::eevee::SHADOW_TILEMAP_RENDERMAP, blender::eevee::SHADOW_TILEMAP_TAG_UPDATE, blender::eevee::SHADOW_TILEMAP_TAG_USAGE_VOLUME, SHADOW_VIEW_MAX, blender::draw::detail::PassBase< DrawCommandBufType >::state_set(), blender::draw::detail::PassBase< DrawCommandBufType >::sub(), blender::eevee::TILE_COPY, tilemap_pool, blender::eevee::ShadowObject::used, and VOLUME_GROUP_SIZE.
|
inline |
Definition at line 389 of file eevee_shadow.hh.
Referenced by blender::eevee::Light::sync().
|
inline |
Definition at line 394 of file eevee_shadow.hh.
Referenced by blender::eevee::Light::sync().
| void blender::eevee::ShadowModule::init | ( | ) |
IMPORTANT: Reflect changes in TBDR tile vertex shader which assumes viewport index 15 covers the whole framebuffer.
Definition at line 572 of file eevee_shadow.cc.
References blender::assign_if_different(), blender::eevee::ATOMIC_RASTER, clamp_i(), divide_ceil_u(), divide_ceil_ul(), Scene::eevee, SceneEEVEE::flag, GPU_ARCHITECTURE_TBDR, GPU_backend_get_type(), GPU_BACKEND_METAL, GPU_platform_architecture(), GPU_TEXTURE_USAGE_ATOMIC, GPU_TEXTURE_USAGE_SHADER_READ, GPU_TEXTURE_USAGE_SHADER_WRITE, i, min_ii(), blender::eevee::ShadowStatistics::page_used_count, SCE_EEVEE_SHADOW_ENABLED, SCE_EEVEE_SHADOW_JITTERED_VIEWPORT, SHADOW_MAX_PAGE, SHADOW_MAX_RAY, SHADOW_MAX_STEP, SHADOW_PAGE_PER_LAYER, SHADOW_PAGE_PER_ROW, SceneEEVEE::shadow_pool_size, SceneEEVEE::shadow_ray_count, SceneEEVEE::shadow_resolution_scale, SceneEEVEE::shadow_step_count, shadow_technique, SHADOW_TILEMAP_LOD, SHADOW_TILEMAP_RES, SHADOW_VIEW_MAX, square_i(), blender::eevee::TILE_COPY, and blender::eevee::ShadowStatistics::view_needed_count.
|
inline |
Definition at line 400 of file eevee_shadow.hh.
|
static |
Compute approximate screen pixel space radius (as world space radius).
Definition at line 1152 of file eevee_shadow.cc.
References blender::math::distance(), float, min_ii(), and blender::math::project_point().
Referenced by set_view(), and blender::eevee::LookdevModule::sync().
| void blender::eevee::ShadowModule::set_lights_data | ( | ) |
References view.
Definition at line 1276 of file eevee_shadow.cc.
References blender::assign_if_different(), blender::eevee::ATOMIC_RASTER, BLI_assert_unreachable, blender::math::divide_ceil(), FLT_MAX, GPU_ATTACHMENT_TEXTURE, GPU_backend_get_type(), GPU_BACKEND_METAL, GPU_BARRIER_SHADER_IMAGE_ACCESS, GPU_BARRIER_TEXTURE_FETCH, GPU_debug_group_begin(), GPU_debug_group_end(), GPU_flush(), GPU_framebuffer_active_get(), GPU_framebuffer_bind(), GPU_framebuffer_bind_ex, GPU_framebuffer_multi_viewports_set(), GPU_LOADACTION_CLEAR, GPU_memory_barrier(), GPU_STOREACTION_DONT_CARE, GPU_TEXTURE_USAGE_ATTACHMENT, GPU_TEXTURE_USAGE_MEMORYLESS, GPU_uniformbuf_clear_to_zero(), screen_pixel_radius(), SHADOW_DEPTH_SCAN_GROUP_SIZE, shadow_technique, SHADOW_TILEMAP_RES, SHADOW_VIEW_MAX, blender::eevee::TILE_COPY, and view.
| void blender::eevee::ShadowModule::sync_object | ( | const Object * | ob, |
| const ObjectHandle & | handle, | ||
| const ResourceHandleRange & | resource_handle, | ||
| bool | is_alpha_blend, | ||
| bool | has_transparent_shadows ) |
Register a shadow caster or receiver.
Definition at line 756 of file eevee_shadow.cc.
References blender::draw::ResourceHandleRange::is_valid(), OB_HIDE_SHADOW, blender::eevee::ObjectHandle::object_key, blender::draw::ResourceHandleRange::raw(), blender::eevee::BaseHandle::recalc, blender::eevee::ShadowObject::resource_handle, blender::eevee::ShadowObject::used, and Object::visibility_flag.
| Pool<ShadowDirectional> blender::eevee::ShadowModule::directional_pool |
Definition at line 210 of file eevee_shadow.hh.
Referenced by blender::eevee::Light::shadow_discard_safe(), and blender::eevee::Light::shadow_ensure().
| Pool<ShadowPunctual> blender::eevee::ShadowModule::punctual_pool |
Definition at line 209 of file eevee_shadow.hh.
Referenced by blender::eevee::Light::shadow_discard_safe(), and blender::eevee::Light::shadow_ensure().
|
static |
Definition at line 204 of file eevee_shadow.hh.
Referenced by end_sync(), init(), blender::eevee::ShaderModule::material_create_info_amend(), set_view(), and blender::eevee::ShadowPipeline::sync().
| ShadowTileMapPool blender::eevee::ShadowModule::tilemap_pool |
Need to be first because of destructor order.
Definition at line 207 of file eevee_shadow.hh.
Referenced by begin_sync(), bind_resources(), debug_end_sync(), and end_sync().