|
Blender V4.3
|
#include <eevee_volume.hh>
Public Member Functions | |
| VolumeModule (Instance &inst, VolumesInfoData &data) | |
| ~VolumeModule () | |
| bool | needs_shadow_tagging () const |
| bool | enabled () const |
| int3 | grid_size () |
| void | init () |
| void | begin_sync () |
| void | world_sync (const WorldHandle &world_handle) |
| void | object_sync (const ObjectHandle &ob_handle) |
| void | end_sync () |
| void | draw_prepass (View &main_view) |
| void | draw_compute (View &main_view, int2 extent) |
| void | draw_resolve (View &view) |
Public Attributes | ||
| struct { | ||
| GPUTexture * scattering_tx_ = nullptr | ||
| GPUTexture * transmittance_tx_ = nullptr | ||
| } | result | |
| struct { | ||
| GPUTexture * scattering_tx_ = nullptr | ||
| GPUTexture * extinction_tx_ = nullptr | ||
| GPUTexture * emission_tx_ = nullptr | ||
| GPUTexture * phase_tx_ = nullptr | ||
| GPUTexture * phase_weight_tx_ = nullptr | ||
| GPUTexture * occupancy_tx_ = nullptr | ||
| } | properties | |
| struct { | ||
| GPUTexture * occupancy_tx_ = nullptr | ||
| GPUTexture * hit_depth_tx_ = nullptr | ||
| GPUTexture * hit_count_tx_ = nullptr | ||
| } | occupancy | |
Definition at line 47 of file eevee_volume.hh.
|
inline |
Definition at line 116 of file eevee_volume.hh.
References blender::draw::Texture::ensure_3d(), GPU_RGBA8, and GPU_TEXTURE_USAGE_SHADER_READ.
|
inline |
Definition at line 122 of file eevee_volume.hh.
| void blender::eevee::VolumeModule::begin_sync | ( | ) |
Definition at line 73 of file eevee_volume.cc.
Definition at line 433 of file eevee_volume.cc.
References blender::eevee::PipelineModule::deferred, blender::eevee::VolumesInfoData::depth_distribution, blender::eevee::VolumesInfoData::depth_far, blender::eevee::VolumesInfoData::depth_near, blender::eevee::VolumesInfoData::history_depth_distribution, blender::eevee::VolumesInfoData::history_depth_far, blender::eevee::VolumesInfoData::history_depth_near, blender::eevee::VolumesInfoData::history_winmat_stable, blender::eevee::Instance::hiz_buffer, blender::eevee::DeferredPipeline::is_empty(), blender::eevee::Instance::manager, blender::eevee::Instance::pipelines, blender::eevee::ShadowModule::set_view(), blender::eevee::SphereProbeModule::set_view(), blender::eevee::VolumeProbeModule::set_view(), blender::eevee::Instance::shadows, blender::eevee::Instance::sphere_probes, blender::draw::Manager::submit(), blender::eevee::HiZBuffer::swap_layer(), blender::eevee::HiZBuffer::update(), blender::draw::View::viewmat(), blender::eevee::Instance::volume_probes, and blender::eevee::VolumesInfoData::winmat_stable.
Referenced by blender::eevee::ShadingView::render().
| void blender::eevee::VolumeModule::draw_prepass | ( | View & | main_view | ) |
Definition at line 317 of file eevee_volume.cc.
References blender::draw::Framebuffer::bind(), blender::eevee::VolumesInfoData::curr_view_to_past_view, DRW_stats_group_end(), DRW_stats_group_start(), blender::eevee::Instance::film, blender::math::fract(), blender::eevee::VolumesInfoData::history_opacity, blender::eevee::VolumesInfoData::inv_tex_size, blender::math::invert(), blender::eevee::Instance::is_image_render(), blender::eevee::Instance::is_navigating(), blender::draw::View::is_persp(), blender::eevee::Instance::is_playback(), blender::eevee::Sampling::is_reset(), blender::eevee::Instance::is_transforming(), left, blender::math::min(), blender::math::projection::orthographic(), blender::math::projection::orthographic_infinite(), blender::math::projection::perspective(), blender::math::projection::perspective_infinite(), blender::eevee::Instance::pipelines, projmat_dimensions(), blender::MatBase< T, NumCol, NumRow, Alignment >::ptr(), blender::eevee::UniformDataModule::push_update(), blender::eevee::VolumePipeline::render(), blender::eevee::WorldVolumePipeline::render(), blender::eevee::Film::render_extent_get(), blender::eevee::Sampling::rng_2d_get(), blender::eevee::Instance::sampling, blender::eevee::SAMPLING_VOLUME_U, blender::draw::View::sync(), blender::eevee::VolumesInfoData::tex_size, blender::eevee::VolumesInfoData::tile_size, top, blender::math::projection::translate(), blender::eevee::Instance::uniform_data, blender::draw::View::viewinv(), blender::draw::View::viewmat(), blender::draw::View::visibility_test(), blender::eevee::PipelineModule::volume, blender::eevee::VolumesInfoData::wininv_finite, blender::eevee::VolumesInfoData::wininv_stable, blender::draw::View::winmat(), blender::eevee::VolumesInfoData::winmat_finite, blender::eevee::VolumesInfoData::winmat_stable, and blender::eevee::PipelineModule::world_volume.
Referenced by blender::eevee::ShadingView::render().
| void blender::eevee::VolumeModule::draw_resolve | ( | View & | view | ) |
Definition at line 465 of file eevee_volume.cc.
References blender::draw::Framebuffer::bind(), blender::eevee::RenderBuffers::combined_tx, blender::draw::Framebuffer::ensure(), GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE, blender::eevee::Instance::hiz_buffer, blender::eevee::Instance::manager, blender::eevee::Instance::render_buffers, blender::draw::Manager::submit(), and blender::eevee::HiZBuffer::update().
Referenced by blender::eevee::ForwardPipeline::render().
|
inline |
Definition at line 129 of file eevee_volume.hh.
| void blender::eevee::VolumeModule::end_sync | ( | ) |
Definition at line 103 of file eevee_volume.cc.
References blender::assign_if_different(), 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_texture(), blender::eevee::Instance::camera, clamp_i(), blender::draw::Texture::clear(), blender::eevee::CameraData::clip_far, blender::eevee::CameraData::clip_near, blender::eevee::Camera::data_get(), blender::eevee::VolumesInfoData::depth_distribution, blender::eevee::VolumesInfoData::depth_far, blender::eevee::VolumesInfoData::depth_near, blender::draw::detail::PassBase< DrawCommandBufType >::dispatch(), blender::math::divide_ceil(), divide_ceil_u(), blender::draw::detail::PassBase< DrawCommandBufType >::draw_procedural(), DRW_STATE_BLEND_CUSTOM, DRW_STATE_WRITE_COLOR, Scene::eevee, blender::draw::Framebuffer::ensure(), blender::draw::Texture::ensure_2d(), blender::draw::Texture::ensure_3d(), SceneEEVEE::flag, blender::draw::Texture::free(), blender::eevee::HiZBuffer::front, GPU_ATTACHMENT_TEXTURE, GPU_BARRIER_SHADER_IMAGE_ACCESS, GPU_BARRIER_TEXTURE_FETCH, GPU_DEPTH24_STENCIL8, GPU_PRIM_TRIS, GPU_R11F_G11F_B10F, GPU_R16F, GPU_R32F, GPU_R32UI, GPU_SAMPLER_EXTEND_MODE_EXTEND, GPU_SAMPLER_FILTERING_LINEAR, GPU_TEXTURE_USAGE_ATOMIC, GPU_TEXTURE_USAGE_ATTACHMENT, GPU_TEXTURE_USAGE_SHADER_READ, GPU_TEXTURE_USAGE_SHADER_WRITE, blender::eevee::VolumePipeline::has_absorption(), blender::eevee::VolumePipeline::has_scatter(), blender::eevee::World::has_volume(), blender::eevee::World::has_volume_absorption(), blender::eevee::World::has_volume_scatter(), blender::eevee::Instance::hiz_buffer, blender::draw::detail::Pass< DrawCommandBufType >::init(), blender::eevee::Camera::is_camera_object(), blender::eevee::Camera::is_orthographic(), blender::eevee::Camera::is_perspective(), blender::eevee::Instance::lights, blender::math::max(), blender::math::min(), blender::eevee::VolumePipeline::object_integration_range(), occupancy, blender::eevee::Instance::pipelines, properties, RBUFS_COLOR_SLOT, RBUFS_UTILITY_TEX_SLOT, RBUFS_VALUE_SLOT, blender::eevee::Instance::render_buffers, blender::eevee::RenderBuffers::rp_color_tx, blender::eevee::RenderBuffers::rp_value_tx, blender::eevee::Instance::sampling, SCE_EEVEE_VOLUME_CUSTOM_RANGE, blender::eevee::Instance::scene, blender::draw::detail::PassBase< DrawCommandBufType >::shader_set(), blender::eevee::Instance::shaders, blender::eevee::Instance::shadows, blender::eevee::Instance::sphere_probes, blender::draw::detail::PassBase< DrawCommandBufType >::state_set(), blender::eevee::ShaderModule::static_shader_get(), blender::eevee::VolumesInfoData::tex_size, blender::eevee::Instance::uniform_data, UNUSED_VARS, blender::eevee::VolumePipeline::use_hit_list(), blender::eevee::PipelineModule::utility_tx, blender::eevee::PipelineModule::volume, VOLUME_GROUP_SIZE, blender::eevee::VOLUME_INTEGRATION, VOLUME_INTEGRATION_GROUP_SIZE, blender::eevee::Instance::volume_probes, blender::eevee::VOLUME_RESOLVE, blender::eevee::VOLUME_SCATTER, blender::eevee::VOLUME_SCATTER_WITH_LIGHTS, SceneEEVEE::volumetric_end, SceneEEVEE::volumetric_ray_depth, SceneEEVEE::volumetric_sample_distribution, SceneEEVEE::volumetric_start, blender::eevee::Instance::world, and packed_int3::z.
|
inline |
Definition at line 134 of file eevee_volume.hh.
References blender::eevee::VolumesInfoData::tex_size.
Referenced by blender::eevee::ShadowModule::end_sync().
| void blender::eevee::VolumeModule::init | ( | ) |
Definition at line 25 of file eevee_volume.cc.
References clamp_i(), blender::eevee::VolumesInfoData::coord_scale, blender::math::divide_ceil(), Scene::eevee, blender::eevee::Instance::film, SceneEEVEE::flag, GPU_max_texture_3d_size(), blender::eevee::Instance::info_append_i18n(), int, blender::eevee::VolumesInfoData::inv_tex_size, blender::eevee::VolumesInfoData::light_clamp, blender::eevee::VolumesInfoData::main_view_extent, blender::eevee::VolumesInfoData::main_view_extent_inv, blender::math::reduce_max(), blender::eevee::Film::render_extent_get(), SCE_EEVEE_TAA_REPROJECTION, SCE_EEVEE_VOLUMETRIC_SHADOWS, blender::eevee::Instance::scene, blender::eevee::VolumesInfoData::shadow_steps, blender::eevee::VolumesInfoData::tex_size, blender::eevee::VolumesInfoData::tile_size, blender::eevee::VolumesInfoData::tile_size_lod, SceneEEVEE::volumetric_light_clamp, SceneEEVEE::volumetric_samples, SceneEEVEE::volumetric_shadow_samples, and SceneEEVEE::volumetric_tile_size.
|
inline |
Definition at line 124 of file eevee_volume.hh.
Referenced by blender::eevee::ShadowModule::end_sync().
| void blender::eevee::VolumeModule::object_sync | ( | const ObjectHandle & | ob_handle | ) |
Definition at line 90 of file eevee_volume.cc.
References blender::eevee::Instance::is_playback(), blender::eevee::ObjectHandle::object_key, and blender::eevee::BaseHandle::recalc.
Referenced by blender::eevee::SyncModule::sync_curves(), blender::eevee::SyncModule::sync_mesh(), blender::eevee::SyncModule::sync_point_cloud(), blender::eevee::SyncModule::sync_sculpt(), and blender::eevee::SyncModule::sync_volume().
| void blender::eevee::VolumeModule::world_sync | ( | const WorldHandle & | world_handle | ) |
Definition at line 79 of file eevee_volume.cc.
References blender::eevee::Instance::is_playback(), and blender::eevee::BaseHandle::recalc.
| GPUTexture* blender::eevee::VolumeModule::emission_tx_ = nullptr |
Definition at line 174 of file eevee_volume.hh.
| GPUTexture* blender::eevee::VolumeModule::extinction_tx_ = nullptr |
Definition at line 173 of file eevee_volume.hh.
| GPUTexture* blender::eevee::VolumeModule::hit_count_tx_ = nullptr |
Definition at line 195 of file eevee_volume.hh.
| GPUTexture* blender::eevee::VolumeModule::hit_depth_tx_ = nullptr |
Definition at line 194 of file eevee_volume.hh.
| struct { ... } blender::eevee::VolumeModule::occupancy |
Referenced by end_sync(), and blender::eevee::VolumeLayer::sync().
| GPUTexture* blender::eevee::VolumeModule::occupancy_tx_ = nullptr |
References to the textures in the module.
Definition at line 177 of file eevee_volume.hh.
| GPUTexture* blender::eevee::VolumeModule::phase_tx_ = nullptr |
Definition at line 175 of file eevee_volume.hh.
| GPUTexture* blender::eevee::VolumeModule::phase_weight_tx_ = nullptr |
Definition at line 176 of file eevee_volume.hh.
| struct { ... } blender::eevee::VolumeModule::properties |
| struct { ... } blender::eevee::VolumeModule::result |
Referenced by blender::eevee::ShadowModule::end_sync(), and blender::eevee::ForwardPipeline::sync().
| GPUTexture* blender::eevee::VolumeModule::scattering_tx_ = nullptr |
References to the textures in the module.
Definition at line 159 of file eevee_volume.hh.
| GPUTexture* blender::eevee::VolumeModule::transmittance_tx_ = nullptr |
Definition at line 160 of file eevee_volume.hh.