Blender V4.3
blender::eevee::VolumeModule Class Reference

#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 
 

Detailed Description

Definition at line 47 of file eevee_volume.hh.

Constructor & Destructor Documentation

◆ VolumeModule()

blender::eevee::VolumeModule::VolumeModule ( Instance & inst,
VolumesInfoData & data )
inline

◆ ~VolumeModule()

blender::eevee::VolumeModule::~VolumeModule ( )
inline

Definition at line 122 of file eevee_volume.hh.

Member Function Documentation

◆ begin_sync()

void blender::eevee::VolumeModule::begin_sync ( )

Definition at line 73 of file eevee_volume.cc.

◆ draw_compute()

◆ draw_prepass()

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().

◆ draw_resolve()

◆ enabled()

bool blender::eevee::VolumeModule::enabled ( ) const
inline

Definition at line 129 of file eevee_volume.hh.

◆ end_sync()

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.

◆ grid_size()

int3 blender::eevee::VolumeModule::grid_size ( )
inline

◆ init()

◆ needs_shadow_tagging()

bool blender::eevee::VolumeModule::needs_shadow_tagging ( ) const
inline

Definition at line 124 of file eevee_volume.hh.

Referenced by blender::eevee::ShadowModule::end_sync().

◆ object_sync()

◆ world_sync()

void blender::eevee::VolumeModule::world_sync ( const WorldHandle & world_handle)

Member Data Documentation

◆ emission_tx_

GPUTexture* blender::eevee::VolumeModule::emission_tx_ = nullptr

Definition at line 174 of file eevee_volume.hh.

◆ extinction_tx_

GPUTexture* blender::eevee::VolumeModule::extinction_tx_ = nullptr

Definition at line 173 of file eevee_volume.hh.

◆ hit_count_tx_

GPUTexture* blender::eevee::VolumeModule::hit_count_tx_ = nullptr

Definition at line 195 of file eevee_volume.hh.

◆ hit_depth_tx_

GPUTexture* blender::eevee::VolumeModule::hit_depth_tx_ = nullptr

Definition at line 194 of file eevee_volume.hh.

◆ [struct]

struct { ... } blender::eevee::VolumeModule::occupancy

◆ occupancy_tx_

GPUTexture* blender::eevee::VolumeModule::occupancy_tx_ = nullptr

References to the textures in the module.

Definition at line 177 of file eevee_volume.hh.

◆ phase_tx_

GPUTexture* blender::eevee::VolumeModule::phase_tx_ = nullptr

Definition at line 175 of file eevee_volume.hh.

◆ phase_weight_tx_

GPUTexture* blender::eevee::VolumeModule::phase_weight_tx_ = nullptr

Definition at line 176 of file eevee_volume.hh.

◆ [struct]

◆ [struct]

struct { ... } blender::eevee::VolumeModule::result

◆ scattering_tx_

GPUTexture* blender::eevee::VolumeModule::scattering_tx_ = nullptr

References to the textures in the module.

Definition at line 159 of file eevee_volume.hh.

◆ transmittance_tx_

GPUTexture* blender::eevee::VolumeModule::transmittance_tx_ = nullptr

Definition at line 160 of file eevee_volume.hh.


The documentation for this class was generated from the following files: