|
Blender V4.3
|
#include <eevee_film.hh>
Public Member Functions | |
| Film (Instance &inst, FilmData &data) | |
| ~Film () | |
| const FilmData & | get_data () |
| int2 | render_extent_get () const |
| int2 | film_extent_get () const |
| int2 | film_offset_get () const |
| int2 | display_extent_get () const |
| int | render_overscan_get () const |
| int | scaling_factor_get () const |
| float | background_opacity_get () const |
| int | pass_id_get (eViewLayerEEVEEPassType pass_type) const |
Static Public Member Functions | |
| static int | overscan_pixels_get (float overscan, int2 extent) |
| static ePassStorageType | pass_storage_type (eViewLayerEEVEEPassType pass_type) |
| static bool | pass_is_float3 (eViewLayerEEVEEPassType pass_type) |
| static const Vector< std::string > | pass_to_render_pass_names (eViewLayerEEVEEPassType pass_type, const ViewLayer *view_layer) |
Public Attributes | |
| AOVsInfoDataBuf | aovs_info |
Static Public Attributes | |
| static constexpr bool | use_box_filter = false |
Film | |
| void | init (const int2 &full_extent, const rcti *output_rect) |
| void | sync () |
| void | end_sync () |
| void | accumulate (View &view, GPUTexture *combined_final_tx) |
| void | cryptomatte_sort () |
| void | display () |
| float * | read_pass (eViewLayerEEVEEPassType pass_type, int layer_offset) |
| GPUTexture * | get_pass_texture (eViewLayerEEVEEPassType pass_type, int layer_offset) |
| void | write_viewport_compositor_passes () |
| bool | is_viewport_compositor_enabled () const |
| float2 | pixel_jitter_get () const |
| eViewLayerEEVEEPassType | enabled_passes_get () const |
| int | cryptomatte_layer_max_get () const |
| int | cryptomatte_layer_len_get () const |
Arbitrary Output Variables | |
| float * | read_aov (ViewLayerAOV *aov) |
| GPUTexture * | get_aov_texture (ViewLayerAOV *aov) |
Definition at line 50 of file eevee_film.hh.
Definition at line 96 of file eevee_film.hh.
|
inline |
Definition at line 97 of file eevee_film.hh.
| void Film::accumulate | ( | View & | view, |
| GPUTexture * | combined_final_tx ) |
Accumulate the newly rendered sample contained in RenderBuffers and blit to display.
Definition at line 767 of file eevee_film.cc.
References DefaultTextureList::color, DefaultFramebufferList::default_fb, blender::eevee::FilmData::display_only, DRW_viewport_framebuffer_list_get(), DRW_viewport_texture_list_get(), blender::eevee::FilmData::extent, GPU_framebuffer_bind(), GPU_framebuffer_clear_color(), GPU_framebuffer_viewport_set(), GPU_texture_height(), GPU_texture_width(), blender::eevee::Instance::is_viewport(), blender::eevee::Instance::manager, blender::eevee::FilmData::offset, blender::eevee::UniformDataModule::push_update(), blender::draw::Manager::submit(), blender::eevee::Instance::uniform_data, UNPACK2, and blender::eevee::FilmData::use_history.
Referenced by blender::eevee::ShadingView::render().
|
inline |
Definition at line 169 of file eevee_film.hh.
Referenced by blender::eevee::World::sync().
| int Film::cryptomatte_layer_len_get | ( | ) | const |
Definition at line 651 of file eevee_film.cc.
References blender::eevee::FilmData::cryptomatte_asset_id, blender::eevee::FilmData::cryptomatte_material_id, blender::eevee::FilmData::cryptomatte_object_id, and result.
| int Film::cryptomatte_layer_max_get | ( | ) | const |
Definition at line 660 of file eevee_film.cc.
References blender::eevee::FilmData::cryptomatte_asset_id, blender::eevee::FilmData::cryptomatte_material_id, and blender::eevee::FilmData::cryptomatte_object_id.
Referenced by blender::eevee::RenderBuffers::acquire().
| void Film::cryptomatte_sort | ( | ) |
Sort and normalize cryptomatte samples.
Definition at line 825 of file eevee_film.cc.
References DRW_manager_get(), and blender::draw::Manager::submit().
Referenced by write_viewport_compositor_passes().
| void Film::display | ( | ) |
Blit to display. No rendered sample needed.
Definition at line 800 of file eevee_film.cc.
References blender::eevee::RenderBuffers::acquire(), BLI_assert, blender::eevee::RenderBuffers::combined_tx, DefaultFramebufferList::default_fb, blender::eevee::FilmData::display_only, DRW_manager_get(), DRW_view_default_get(), DRW_viewport_framebuffer_list_get(), blender::eevee::FilmData::extent, GPU_framebuffer_bind(), GPU_framebuffer_viewport_set(), blender::eevee::Instance::is_viewport(), blender::eevee::FilmData::offset, blender::eevee::UniformDataModule::push_update(), blender::eevee::RenderBuffers::release(), blender::eevee::Instance::render_buffers, blender::draw::Manager::submit(), blender::eevee::Instance::uniform_data, and UNPACK2.
|
inline |
Size of the whole viewport or the render, disregarding the render region.
Definition at line 145 of file eevee_film.hh.
Referenced by blender::eevee::Camera::sync(), and blender::eevee::LookdevModule::sync().
| eViewLayerEEVEEPassType Film::enabled_passes_get | ( | ) | const |
Definition at line 642 of file eevee_film.cc.
References EEVEE_RENDER_PASS_VECTOR, and blender::eevee::Instance::is_viewport().
Referenced by blender::eevee::RenderBuffers::acquire(), blender::eevee::Cryptomatte::begin_sync(), blender::eevee::AmbientOcclusion::init(), blender::eevee::RenderBuffers::init(), blender::eevee::VelocityModule::init(), blender::eevee::Cryptomatte::sync_object(), and blender::eevee::RenderBuffers::vector_tx_format().
| void Film::end_sync | ( | ) |
Definition at line 587 of file eevee_film.cc.
References aovs_info, blender::eevee::Sampling::interactive_mode(), blender::eevee::Sampling::is_reset(), blender::draw::detail::StorageCommon< T, len, device_only >::push_update(), blender::eevee::Instance::sampling, and blender::eevee::FilmData::use_history.
|
inline |
Size and offset of the film (taking into account render region).
Definition at line 135 of file eevee_film.hh.
Referenced by blender::eevee::Camera::sync().
|
inline |
Definition at line 139 of file eevee_film.hh.
Referenced by blender::eevee::Camera::sync().
| GPUTexture * Film::get_aov_texture | ( | ViewLayerAOV * | aov | ) |
Definition at line 111 of file eevee_film.cc.
References blender::eevee::FilmData::aov_color_id, AOV_TYPE_VALUE, blender::eevee::FilmData::aov_value_id, aovs_info, BLI_hash_string(), blender::eevee::AOVsInfoData::color_len, blender::draw::Texture::ensure_layer_views(), hash, blender::eevee::AOVsInfoData::hash_color, blender::eevee::AOVsInfoData::hash_value, blender::draw::Texture::layer_view(), ViewLayerAOV::name, ViewLayerAOV::type, and blender::eevee::AOVsInfoData::value_len.
Referenced by read_aov(), and write_viewport_compositor_passes().
|
inline |
Definition at line 104 of file eevee_film.hh.
| GPUTexture * Film::get_pass_texture | ( | eViewLayerEEVEEPassType | pass_type, |
| int | layer_offset ) |
Definition at line 848 of file eevee_film.cc.
References EEVEE_RENDER_PASS_COMBINED, EEVEE_RENDER_PASS_Z, blender::draw::Texture::ensure_layer_views(), blender::draw::Texture::layer_view(), pass_id_get(), blender::eevee::PASS_STORAGE_CRYPTOMATTE, pass_storage_type(), and blender::eevee::PASS_STORAGE_VALUE.
Referenced by read_pass(), and write_viewport_compositor_passes().
Definition at line 264 of file eevee_film.cc.
References blender::eevee::FilmData::ambient_occlusion_id, blender::eevee::FilmData::aov_color_id, blender::eevee::FilmData::aov_color_len, blender::eevee::FilmData::aov_value_id, blender::eevee::FilmData::aov_value_len, aovs_info, blender::eevee::FilmData::background_opacity, BKE_render_preview_pixel_size(), BLI_rcti_init(), BLI_rcti_is_empty(), BLI_rcti_size_x(), BLI_rcti_size_y(), blender::eevee::Instance::camera, clamp_f(), blender::draw::Texture::clear(), blender::eevee::AOVsInfoData::color_len, blender::eevee::FilmData::color_len, blender::eevee::FilmData::combined_id, blender::eevee::FilmData::cryptomatte_asset_id, cryptomatte_layer_len_get(), ViewLayer::cryptomatte_levels, blender::eevee::FilmData::cryptomatte_material_id, blender::eevee::FilmData::cryptomatte_object_id, blender::eevee::FilmData::cryptomatte_samples_len, blender::eevee::FilmData::depth_id, blender::eevee::FilmData::diffuse_color_id, blender::eevee::FilmData::diffuse_light_id, blender::eevee::AOVsInfoData::display_id, blender::eevee::FilmData::display_id, blender::eevee::AOVsInfoData::display_is_value, blender::eevee::FilmData::display_storage_type, blender::math::divide_ceil(), divide_ceil_u(), EEVEE_RENDER_PASS_AO, EEVEE_RENDER_PASS_COMBINED, EEVEE_RENDER_PASS_CRYPTOMATTE_ASSET, EEVEE_RENDER_PASS_CRYPTOMATTE_MATERIAL, EEVEE_RENDER_PASS_CRYPTOMATTE_OBJECT, EEVEE_RENDER_PASS_DIFFUSE_COLOR, EEVEE_RENDER_PASS_DIFFUSE_LIGHT, EEVEE_RENDER_PASS_EMIT, EEVEE_RENDER_PASS_ENVIRONMENT, EEVEE_RENDER_PASS_MIST, EEVEE_RENDER_PASS_NORMAL, EEVEE_RENDER_PASS_POSITION, EEVEE_RENDER_PASS_SHADOW, EEVEE_RENDER_PASS_SPECULAR_COLOR, EEVEE_RENDER_PASS_SPECULAR_LIGHT, EEVEE_RENDER_PASS_TRANSPARENT, EEVEE_RENDER_PASS_UNUSED_14, EEVEE_RENDER_PASS_UNUSED_8, EEVEE_RENDER_PASS_VECTOR, EEVEE_RENDER_PASS_VOLUME_LIGHT, EEVEE_RENDER_PASS_Z, blender::eevee::FilmData::emission_id, blender::eevee::enabled_passes(), blender::draw::Texture::ensure_2d(), blender::draw::Texture::ensure_2d_array(), blender::eevee::FilmData::environment_id, blender::eevee::FilmData::exposure_scale, blender::eevee::FilmData::extent, blender::eevee::FilmData::extent_inv, blender::eevee::FilmData::filter_radius, blender::bke::compositor::get_used_passes(), blender::eevee::get_viewport_compositor_enabled_passes(), blender::eevee::Instance::gpencil_engine_enabled(), GPU_R16F, GPU_R32F, GPU_RGBA16F, GPU_RGBA32F, blender::eevee::Camera::is_panoramic(), blender::eevee::Instance::is_viewport(), is_viewport_compositor_enabled(), blender::eevee::FilmData::mist_id, blender::eevee::FilmData::normal_id, blender::eevee::FilmData::offset, blender::eevee::Instance::overlays_enabled(), blender::eevee::Camera::overscan(), blender::eevee::FilmData::overscan, overscan_pixels_get(), blender::eevee::PASS_CATEGORY_COLOR_1, blender::eevee::PASS_CATEGORY_COLOR_2, blender::eevee::PASS_CATEGORY_COLOR_3, blender::eevee::PASS_CATEGORY_CRYPTOMATTE, blender::eevee::PASS_CATEGORY_DATA, blender::eevee::PASS_STORAGE_COLOR, blender::eevee::PASS_STORAGE_CRYPTOMATTE, pass_storage_type(), blender::eevee::PASS_STORAGE_VALUE, blender::eevee::FilmData::position_id, pow2f(), Scene::r, R_ALPHAPREMUL, R_MBLUR, blender::eevee::FilmData::render_extent, View3DShading::render_pass, reset(), blender::eevee::Instance::sampling, blender::eevee::FilmData::scaling_factor, blender::eevee::Instance::scene, View3D::shading, blender::eevee::FilmData::shadow_id, blender::eevee::FilmData::specular_color_id, blender::eevee::FilmData::specular_light_id, View3DShading::studiolight_background, blender::eevee::FilmData::texture_lod_bias, blender::eevee::FilmData::transparent_id, blender::eevee::FilmData::use_history, blender::eevee::Instance::v3d, blender::eevee::AOVsInfoData::value_len, blender::eevee::FilmData::value_len, blender::eevee::FilmData::vector_id, blender::eevee::Instance::view_layer, blender::eevee::FilmData::volume_light_id, rcti::xmin, and rcti::ymin.
| bool Film::is_viewport_compositor_enabled | ( | ) | const |
Definition at line 870 of file eevee_film.cc.
References DRW_is_viewport_compositor_enabled(), and blender::eevee::Instance::is_viewport().
Returns number of overscan pixels for the given parameters.
Definition at line 157 of file eevee_film.hh.
References blender::math::ceil(), max_ff(), and blender::math::reduce_max().
Referenced by init(), and blender::eevee::Camera::sync().
|
inline |
Definition at line 204 of file eevee_film.hh.
References EEVEE_RENDER_PASS_AO, EEVEE_RENDER_PASS_COMBINED, EEVEE_RENDER_PASS_CRYPTOMATTE_ASSET, EEVEE_RENDER_PASS_CRYPTOMATTE_MATERIAL, EEVEE_RENDER_PASS_CRYPTOMATTE_OBJECT, EEVEE_RENDER_PASS_DIFFUSE_COLOR, EEVEE_RENDER_PASS_DIFFUSE_LIGHT, EEVEE_RENDER_PASS_EMIT, EEVEE_RENDER_PASS_ENVIRONMENT, EEVEE_RENDER_PASS_MIST, EEVEE_RENDER_PASS_NORMAL, EEVEE_RENDER_PASS_POSITION, EEVEE_RENDER_PASS_SHADOW, EEVEE_RENDER_PASS_SPECULAR_COLOR, EEVEE_RENDER_PASS_SPECULAR_LIGHT, EEVEE_RENDER_PASS_TRANSPARENT, EEVEE_RENDER_PASS_VECTOR, EEVEE_RENDER_PASS_VOLUME_LIGHT, and EEVEE_RENDER_PASS_Z.
Referenced by get_pass_texture().
|
inlinestatic |
Definition at line 194 of file eevee_film.hh.
References EEVEE_RENDER_PASS_COMBINED, EEVEE_RENDER_PASS_TRANSPARENT, EEVEE_RENDER_PASS_VECTOR, ELEM, blender::eevee::PASS_STORAGE_COLOR, and pass_storage_type().
Referenced by read_pass().
|
inlinestatic |
WARNING: Film and RenderBuffers use different storage types for AO and Shadow.
Definition at line 179 of file eevee_film.hh.
References EEVEE_RENDER_PASS_CRYPTOMATTE_ASSET, EEVEE_RENDER_PASS_CRYPTOMATTE_MATERIAL, EEVEE_RENDER_PASS_CRYPTOMATTE_OBJECT, EEVEE_RENDER_PASS_MIST, EEVEE_RENDER_PASS_Z, blender::eevee::PASS_STORAGE_COLOR, blender::eevee::PASS_STORAGE_CRYPTOMATTE, and blender::eevee::PASS_STORAGE_VALUE.
Referenced by get_pass_texture(), blender::eevee::get_write_pass_shader_type(), init(), and pass_is_float3().
|
inlinestatic |
Definition at line 250 of file eevee_film.hh.
References BLI_assert, ViewLayer::cryptomatte_levels, EEVEE_RENDER_PASS_AO, EEVEE_RENDER_PASS_COMBINED, EEVEE_RENDER_PASS_CRYPTOMATTE_ASSET, EEVEE_RENDER_PASS_CRYPTOMATTE_MATERIAL, EEVEE_RENDER_PASS_CRYPTOMATTE_OBJECT, EEVEE_RENDER_PASS_DIFFUSE_COLOR, EEVEE_RENDER_PASS_DIFFUSE_LIGHT, EEVEE_RENDER_PASS_EMIT, EEVEE_RENDER_PASS_ENVIRONMENT, EEVEE_RENDER_PASS_MIST, EEVEE_RENDER_PASS_NORMAL, EEVEE_RENDER_PASS_POSITION, EEVEE_RENDER_PASS_SHADOW, EEVEE_RENDER_PASS_SPECULAR_COLOR, EEVEE_RENDER_PASS_SPECULAR_LIGHT, EEVEE_RENDER_PASS_TRANSPARENT, EEVEE_RENDER_PASS_VECTOR, EEVEE_RENDER_PASS_VOLUME_LIGHT, EEVEE_RENDER_PASS_Z, blender::Vector< T, InlineBufferCapacity, Allocator >::fill(), RE_PASSNAME_AO, RE_PASSNAME_COMBINED, RE_PASSNAME_CRYPTOMATTE_ASSET, RE_PASSNAME_CRYPTOMATTE_MATERIAL, RE_PASSNAME_CRYPTOMATTE_OBJECT, RE_PASSNAME_DIFFUSE_COLOR, RE_PASSNAME_DIFFUSE_DIRECT, RE_PASSNAME_EMIT, RE_PASSNAME_ENVIRONMENT, RE_PASSNAME_GLOSSY_COLOR, RE_PASSNAME_GLOSSY_DIRECT, RE_PASSNAME_MIST, RE_PASSNAME_NORMAL, RE_PASSNAME_POSITION, RE_PASSNAME_SHADOW, RE_PASSNAME_TRANSPARENT, RE_PASSNAME_VECTOR, RE_PASSNAME_VOLUME_LIGHT, RE_PASSNAME_Z, and result.
Referenced by blender::eevee::get_viewport_compositor_enabled_passes(), blender::eevee::Instance::update_passes(), and write_viewport_compositor_passes().
| float2 Film::pixel_jitter_get | ( | ) | const |
Definition at line 602 of file eevee_film.cc.
References blender::eevee::Instance::camera, blender::eevee::FilmData::filter_radius, float, blender::eevee::Camera::is_panoramic(), M_SQRT1_2, blender::eevee::Sampling::rng_2d_get(), blender::eevee::Sampling::sample_disk(), blender::eevee::Sampling::sample_index(), blender::eevee::Instance::sampling, blender::eevee::SAMPLING_FILTER_U, blender::eevee::FilmData::scaling_factor, square_i(), and use_box_filter.
| float * Film::read_aov | ( | ViewLayerAOV * | aov | ) |
Definition at line 98 of file eevee_film.cc.
References get_aov_texture(), GPU_BARRIER_TEXTURE_UPDATE, GPU_DATA_FLOAT, GPU_memory_barrier(), and GPU_texture_read().
| float * Film::read_pass | ( | eViewLayerEEVEEPassType | pass_type, |
| int | layer_offset ) |
Definition at line 830 of file eevee_film.cc.
References get_pass_texture(), GPU_BARRIER_TEXTURE_UPDATE, GPU_DATA_FLOAT, GPU_memory_barrier(), GPU_texture_height(), GPU_texture_read(), GPU_texture_width(), pass_is_float3(), and result.
|
inline |
Returns shading views internal resolution. Includes overscan pixels.
Definition at line 129 of file eevee_film.hh.
Referenced by blender::eevee::RayTraceModule::alloc_only(), blender::eevee::VolumeModule::draw_prepass(), blender::eevee::LightModule::end_sync(), blender::eevee::AmbientOcclusion::init(), blender::eevee::VolumeModule::init(), blender::eevee::RayTraceModule::render(), blender::eevee::SubsurfaceModule::render(), blender::eevee::AmbientOcclusion::sync(), blender::eevee::DepthOfField::sync(), blender::eevee::HiZBuffer::sync(), and blender::eevee::ShadingView::sync().
|
inline |
Number of padding pixels around the render target. Included inside render_extent_get.
Definition at line 151 of file eevee_film.hh.
|
inline |
Definition at line 162 of file eevee_film.hh.
Referenced by blender::eevee::Sampling::step().
| void Film::sync | ( | ) |
Definition at line 493 of file eevee_film.cc.
References blender::draw::detail::PassBase< DrawCommandBufType >::barrier(), blender::draw::detail::PassBase< DrawCommandBufType >::bind_image(), blender::draw::detail::PassBase< DrawCommandBufType >::bind_resources(), cryptomatte_layer_len_get(), ViewLayer::cryptomatte_levels, blender::draw::detail::PassBase< DrawCommandBufType >::dispatch(), blender::math::divide_ceil(), blender::draw::detail::PassBase< DrawCommandBufType >::draw_procedural(), DRW_STATE_NO_DRAW, blender::eevee::FilmData::extent, blender::eevee::FILM_COMP, blender::eevee::FILM_COPY, blender::eevee::FILM_CRYPTOMATTE_POST, blender::eevee::FILM_FRAG, FILM_GROUP_SIZE, GPU_BARRIER_SHADER_IMAGE_ACCESS, GPU_BARRIER_TEXTURE_FETCH, GPU_DEVICE_INTEL, GPU_DRIVER_ANY, GPU_OS_MAC, GPU_PRIM_TRIS, GPU_type_matches(), blender::draw::detail::Pass< DrawCommandBufType >::init(), blender::eevee::Instance::is_viewport(), is_viewport_compositor_enabled(), blender::draw::detail::PassBase< DrawCommandBufType >::push_constant(), blender::draw::detail::PassBase< DrawCommandBufType >::shader_set(), blender::eevee::Instance::shaders, blender::draw::Texture::size(), blender::draw::detail::PassBase< DrawCommandBufType >::state_set(), blender::eevee::ShaderModule::static_shader_get(), blender::eevee::Instance::uniform_data, UNPACK2, and blender::eevee::Instance::view_layer.
| void Film::write_viewport_compositor_passes | ( | ) |
Definition at line 913 of file eevee_film.cc.
References blender::draw::TextureFromPool::acquire(), AOV_CONFLICT, ViewLayer::aovs, blender::draw::detail::PassBase< DrawCommandBufType >::barrier(), blender::draw::detail::PassBase< DrawCommandBufType >::bind_image(), blender::draw::detail::PassBase< DrawCommandBufType >::bind_texture(), cryptomatte_sort(), blender::draw::detail::PassBase< DrawCommandBufType >::dispatch(), blender::math::divide_ceil(), DRW_viewport_pass_texture_get(), EEVEE_RENDER_PASS_COMBINED, EEVEE_RENDER_PASS_MAX_BIT, FILM_GROUP_SIZE, ViewLayerAOV::flag, get_aov_texture(), blender::eevee::get_aov_write_pass_shader_type(), get_pass_texture(), blender::eevee::get_write_pass_shader_type(), GPU_BARRIER_TEXTURE_FETCH, GPU_texture_format(), LISTBASE_FOREACH, blender::eevee::Instance::manager, ViewLayerAOV::name, blender::eevee::FilmData::offset, pass_to_render_pass_names(), blender::draw::detail::PassBase< DrawCommandBufType >::push_constant(), blender::draw::detail::PassBase< DrawCommandBufType >::shader_set(), blender::eevee::Instance::shaders, blender::Vector< T, InlineBufferCapacity, Allocator >::size(), blender::eevee::ShaderModule::static_shader_get(), blender::draw::Manager::submit(), and blender::eevee::Instance::view_layer.
| AOVsInfoDataBuf blender::eevee::Film::aovs_info |
Stores indirection table of AOVs based on their name hash and their type.
Definition at line 53 of file eevee_film.hh.
Referenced by blender::eevee::DeferredLayer::end_sync(), end_sync(), get_aov_texture(), init(), blender::eevee::RenderBuffers::init(), and blender::eevee::WorldPipeline::sync().
|
staticconstexpr |
For debugging purpose but could be a user option in the future.
Definition at line 55 of file eevee_film.hh.
Referenced by pixel_jitter_get().