|
Blender V5.0
|
#include <eevee_film.hh>
Classes | |
| struct | DepthState |
Public Member Functions | |
| Film (Instance &inst, FilmData &data) | |
| ~Film () | |
| const FilmData & | get_data () |
| int2 | render_extent_get () const |
| bool | is_valid_render_extent () 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 | |
| StorageBuffer< AOVsInfoData > | aovs_info |
| struct blender::eevee::Film::DepthState | depth |
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, gpu::Texture *combined_final_tx) |
| void | cryptomatte_sort () |
| void | display () |
| float * | read_pass (eViewLayerEEVEEPassType pass_type, int layer_offset) |
| gpu::Texture * | get_pass_texture (eViewLayerEEVEEPassType pass_type, int layer_offset) |
| void | write_viewport_compositor_passes () |
| float2 | pixel_jitter_get () const |
| eViewLayerEEVEEPassType | enabled_passes_get () const |
| int | cryptomatte_layer_len_get () const |
Arbitrary Output Variables | |
| float * | read_aov (ViewLayerAOV *aov) |
| gpu::Texture * | get_aov_texture (ViewLayerAOV *aov) |
Definition at line 56 of file eevee_film.hh.
Definition at line 115 of file eevee_film.hh.
References data.
|
inline |
Definition at line 116 of file eevee_film.hh.
| void Film::accumulate | ( | View & | view, |
| gpu::Texture * | combined_final_tx ) |
Accumulate the newly rendered sample contained in RenderBuffers and blit to display.
Definition at line 835 of file eevee_film.cc.
References DefaultTextureList::color, DefaultFramebufferList::default_fb, GPU_framebuffer_bind(), GPU_framebuffer_clear_color(), GPU_framebuffer_viewport_set(), GPU_texture_height(), GPU_texture_width(), UNPACK2, and view.
|
inline |
Definition at line 190 of file eevee_film.hh.
| int Film::cryptomatte_layer_len_get | ( | ) | const |
| void Film::cryptomatte_sort | ( | ) |
Sort and normalize cryptomatte samples.
Definition at line 893 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 868 of file eevee_film.cc.
References BLI_assert, DefaultFramebufferList::default_fb, blender::draw::View::default_get(), DRW_manager_get(), GPU_framebuffer_bind(), GPU_framebuffer_viewport_set(), blender::draw::Manager::submit(), and UNPACK2.
|
inline |
Size of the whole viewport or the render, disregarding the render region.
Definition at line 166 of file eevee_film.hh.
| eViewLayerEEVEEPassType Film::enabled_passes_get | ( | ) | const |
Definition at line 695 of file eevee_film.cc.
References EEVEE_RENDER_PASS_VECTOR.
| void Film::end_sync | ( | ) |
Definition at line 631 of file eevee_film.cc.
References aovs_info.
|
inline |
Size and offset of the film (taking into account render region).
Definition at line 156 of file eevee_film.hh.
|
inline |
Definition at line 160 of file eevee_film.hh.
| gpu::Texture * Film::get_aov_texture | ( | ViewLayerAOV * | aov | ) |
Definition at line 113 of file eevee_film.cc.
References AOV_TYPE_VALUE, aovs_info, BLI_hash_string(), blender::draw::Texture::ensure_layer_views(), hash, i, blender::draw::Texture::layer_view(), ViewLayerAOV::name, and ViewLayerAOV::type.
Referenced by read_aov(), and write_viewport_compositor_passes().
|
inline |
Definition at line 123 of file eevee_film.hh.
| gpu::Texture * Film::get_pass_texture | ( | eViewLayerEEVEEPassType | pass_type, |
| int | layer_offset ) |
Definition at line 917 of file eevee_film.cc.
References EEVEE_RENDER_PASS_COMBINED, EEVEE_RENDER_PASS_DEPTH, 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 266 of file eevee_film.cc.
References RenderData::alphamode, View3DShading::aov_name, aovs_info, blender::assign_if_different(), BKE_render_preview_pixel_size(), BLI_rcti_init(), BLI_rcti_is_empty(), BLI_rcti_size_x(), BLI_rcti_size_y(), clamp_f(), cryptomatte_layer_len_get(), depth, blender::math::divide_ceil(), divide_ceil_u(), DRW_STATE_DEPTH_GREATER_EQUAL, 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_DEPTH, 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, blender::eevee::enabled_passes(), ColorManagedViewSettings::exposure, RenderData::gauss, blender::bke::compositor::get_used_passes(), blender::eevee::get_viewport_compositor_enabled_passes(), GPU_max_texture_size(), blender::math::max(), max_ii(), RenderData::mode, 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, pow2f(), Scene::r, R_ALPHAPREMUL, R_MBLUR, View3DShading::render_pass, reset(), blender::eevee::Sampling::sample_count(), update(), Scene::view_settings, rcti::xmin, and rcti::ymin.
|
inline |
Definition at line 150 of file eevee_film.hh.
Returns number of overscan pixels for the given parameters.
Definition at line 178 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 224 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_DEPTH, 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, and EEVEE_RENDER_PASS_VOLUME_LIGHT.
Referenced by get_pass_texture().
|
inlinestatic |
Definition at line 214 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 199 of file eevee_film.hh.
References EEVEE_RENDER_PASS_CRYPTOMATTE_ASSET, EEVEE_RENDER_PASS_CRYPTOMATTE_MATERIAL, EEVEE_RENDER_PASS_CRYPTOMATTE_OBJECT, EEVEE_RENDER_PASS_DEPTH, EEVEE_RENDER_PASS_MIST, 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 270 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_DEPTH, 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, RE_PASSNAME_AO, RE_PASSNAME_COMBINED, RE_PASSNAME_CRYPTOMATTE_ASSET, RE_PASSNAME_CRYPTOMATTE_MATERIAL, RE_PASSNAME_CRYPTOMATTE_OBJECT, RE_PASSNAME_DEPTH, 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, 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 655 of file eevee_film.cc.
References float, M_SQRT1_2, blender::eevee::Sampling::sample_disk(), blender::eevee::SAMPLING_FILTER_U, blender::math::scale(), square_i(), and use_box_filter.
| float * Film::read_aov | ( | ViewLayerAOV * | aov | ) |
Definition at line 100 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 898 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 146 of file eevee_film.hh.
|
inline |
Number of padding pixels around the render target. Included inside render_extent_get.
Definition at line 172 of file eevee_film.hh.
|
inline |
Definition at line 183 of file eevee_film.hh.
| void Film::sync | ( | ) |
Definition at line 538 of file eevee_film.cc.
References cryptomatte_layer_len_get(), blender::math::divide_ceil(), DRW_STATE_NO_DRAW, 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::gpu::Shader::init(), and UNPACK2.
| void Film::write_viewport_compositor_passes | ( | ) |
Definition at line 977 of file eevee_film.cc.
References blender::draw::TextureFromPool::acquire(), AOV_CONFLICT, 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(), i, LISTBASE_FOREACH, ViewLayerAOV::name, pass_to_render_pass_names(), blender::draw::detail::PassBase< DrawCommandBufType >::push_constant(), blender::draw::detail::PassBase< DrawCommandBufType >::shader_set(), and blender::Vector< T, InlineBufferCapacity, Allocator >::size().
| StorageBuffer<AOVsInfoData> blender::eevee::Film::aovs_info |
Stores indirection table of AOVs based on their name hash and their type.
Definition at line 59 of file eevee_film.hh.
Referenced by end_sync(), get_aov_texture(), and init().
| struct blender::eevee::Film::DepthState blender::eevee::Film::depth |
Referenced by init().
|
staticconstexpr |
For debugging purpose but could be a user option in the future.
Definition at line 61 of file eevee_film.hh.
Referenced by pixel_jitter_get().