78 if (vis_in ==
false) {
88 return vis_in && oed->
ob_vis;
104 int screen_divider = 1;
119 if (num_planar_ref > 0) {
129 else if (num_planar_ref == 0) {
146 vedata->
info[0] =
'\0';
163 vedata->
info,
sizeof(vedata->
info),
"Error: LightCache cannot be loaded on this GPU");
167 #if defined(IRRADIANCE_SH_L2)
169 #elif defined(IRRADIANCE_HL2)
177 (
int[3]){grid_res, grid_res, 1});
199 if (!
e_data.planar_pool_placeholder) {
243 #ifdef IRRADIANCE_SH_L2
341 int cube_len = lcache->
cube_len - 1;
362 for (
int p = 1; p < lcache->
grid_len; p++, egrid++) {
392 {
"probe_id", DRW_ATTR_INT, 1},
393 {
"probe_mat", DRW_ATTR_FLOAT, 16},
406 stl->g_data->planar_display_shgrp =
NULL;
414 switch (probe->
type) {
420 const float min[3] = {-1.0f, -1.0f, -1.0f};
421 const float max[3] = {1.0f, 1.0f, 1.0f};
428 for (
int v = 0;
v < 8;
v++) {
451 printf(
"Too many probes in the view !!!\n");
501 float cell_dim[3], half_cell_dim[3];
580 float normat[4][4], imat[4][4];
590 imat[0][2] = -imat[0][2];
591 imat[1][2] = -imat[1][2];
592 imat[2][2] = -imat[2][2];
593 imat[3][2] = -imat[3][2];
606 float vec[3] = {0.0f, 0.0f, 0.0f};
633 float min_angle = 0.0f;
638 float max_dist = probe->
distinf;
648 float winmat[4][4], viewmat[4][4], persmat[4][4];
655 winmat[0][0] = -winmat[0][0];
656 winmat[1][0] = -winmat[1][0];
657 winmat[2][0] = -winmat[2][0];
658 winmat[3][0] = -winmat[3][0];
662 if (*r_planar_view ==
NULL) {
668 clip_plane[3] += eplanar->
clipsta;
775 float winmat[4][4], viewmat[4][4];
779 for (
int i = 0; i < 6; i++) {
785 if (views[i] ==
NULL) {
793 if (views[i] ==
NULL) {
803 for (
int i = 0; i < 6; i++) {
818 for (
int i = 0; i < ref_count; i++) {
822 for (
int i = 0; i < ref_count; i++) {
836 GPU_framebuffer_clear_depth(face_fb[face], 1.0f);
865 GPU_framebuffer_clear_depth(face_fb[face], 1.0f);
902 {GPU_ATTACHMENT_TEXTURE_LAYER(txl->planar_depth, layer),
903 GPU_ATTACHMENT_TEXTURE_LAYER(txl->planar_pool, layer)});
986 float filter_quality,
1000 GPU_framebuffer_ensure_config(&
fb, {GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_NONE});
1008 for (
int i = 0; i < maxlevel + 1; i++) {
1011 pinfo->
padding_size = (i == maxlevel) ? 0 : (
float)(1 << (maxlevel - i - 1));
1013 pinfo->
layer = probe_idx * 6;
1048 CLAMP(filter_quality, 1.0f, 8.0f);
1052 pinfo->
firefly_fac = (firefly_fac > 0.0) ? firefly_fac : 1e16;
1054 GPU_framebuffer_ensure_config(&
fb,
1056 GPU_ATTACHMENT_NONE,
1057 GPU_ATTACHMENT_TEXTURE_MIP(light_cache->
cube_tx.
tex, i),
1085 #if defined(IRRADIANCE_SH_L2)
1086 int size[2] = {3, 3};
1087 #elif defined(IRRADIANCE_HL2)
1088 const int size[2] = {3, 2};
1093 int x =
size[0] * (grid_offset % cell_per_row);
1094 int y =
size[1] * (grid_offset / cell_per_row);
1096 #ifndef IRRADIANCE_SH_L2
1098 const float bias = 0.0f;
1107 GPU_framebuffer_ensure_config(&
fb, {GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_NONE});
1112 GPU_framebuffer_ensure_config(
1113 &
fb, {GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE_LAYER(light_cache->
grid_tx.
tex, 0)});
1137 pinfo->
shres = vis_size;
1146 int x = vis_size * (grid_offset % cell_per_row);
1147 int y = vis_size * ((grid_offset / cell_per_row) % cell_per_col);
1148 int layer = 1 + ((grid_offset / cell_per_row) / cell_per_col);
1150 GPU_framebuffer_ensure_config(
1151 &
fb, {GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE_LAYER(light_cache->
grid_tx.
tex, layer)});
1166 for (
int i = 0; i < level - 1; i++) {
1185 {GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE(txl->planar_pool)});
typedef float(TangentPoint)[2]
bool BKE_collection_has_object_recursive(struct Collection *collection, struct Object *ob)
General operations, lookup, etc. for blender objects.
void BKE_boundbox_init_from_minmax(struct BoundBox *bb, const float min[3], const float max[3])
MINLINE float max_fff(float a, float b, float c)
MINLINE float max_ff(float a, float b)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
MINLINE int max_ii(int a, int b)
MINLINE float square_f(float a)
MINLINE unsigned int log2_floor_u(unsigned int x)
void perspective_m4(float mat[4][4], const float left, const float right, const float bottom, const float top, const float nearClip, const float farClip)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
bool invert_m4(float R[4][4])
void unit_m4(float m[4][4])
bool invert_m4_m4(float R[4][4], const float A[4][4])
void mul_m4_v3(const float M[4][4], float r[3])
void scale_m4_fl(float R[4][4], float scale)
void normalize_m4_m4(float R[4][4], const float M[4][4]) ATTR_NONNULL()
void copy_m4_m4(float m1[4][4], const float m2[4][4])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE float len_squared_v3(const float v[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void add_v3_fl(float r[3], float f)
MINLINE float normalize_v3(float r[3])
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void negate_v3_v3(float r[3], const float a[3])
MINLINE void copy_v3_v3_int(int r[3], const int a[3])
MINLINE void copy_v3_fl3(float v[3], float x, float y, float z)
MINLINE float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE float normalize_v3_v3(float r[3], const float a[3])
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void add_v3_v3(float r[3], const float a[3])
MINLINE void invert_v2(float r[2])
MINLINE void copy_v2_fl(float r[2], float f)
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
struct Scene * DEG_get_input_scene(const Depsgraph *graph)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
@ LIGHTCACHE_UPDATE_WORLD
@ LIGHTPROBE_FLAG_INVERT_GROUP
@ LIGHTPROBE_FLAG_SHOW_DATA
@ LIGHTPROBE_FLAG_CUSTOM_PARALLAX
@ SCE_EEVEE_SHOW_IRRADIANCE
@ SCE_EEVEE_SHOW_CUBEMAPS
#define DRW_shgroup_instance_format(format,...)
#define DRW_buffer_add_entry(buffer,...)
@ DRW_STATE_DEPTH_LESS_EQUAL
#define DRW_PASS_CREATE(pass, state)
#define DRW_shgroup_call(shgroup, geom, ob)
#define DRW_TEXTURE_FREE_SAFE(tex)
struct GPUFrameBuffer GPUFrameBuffer
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
int GPU_texture_height(const GPUTexture *tex)
struct GPUTexture GPUTexture
int GPU_texture_width(const GPUTexture *tex)
Read Guarded memory(de)allocation.
Group RGB to Bright Vector Camera CLAMP
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
CCL_NAMESPACE_BEGIN struct Options options
DEGForeachIDComponentCallback callback
GPUBatch * DRW_cache_quad_get(void)
GPUBatch * DRW_cache_fullscreen_quad_get(void)
bool DRW_state_is_opengl_render(void)
bool DRW_state_draw_support(void)
const DRWContextState * DRW_context_state_get(void)
const float * DRW_viewport_size_get(void)
const float * DRW_viewport_screenvecs_get(void)
bool DRW_state_is_image_render(void)
DRWShadingGroup * DRW_shgroup_material_create(struct GPUMaterial *material, DRWPass *pass)
void DRW_shgroup_uniform_float_copy(DRWShadingGroup *shgroup, const char *name, const float value)
void DRW_shgroup_uniform_block(DRWShadingGroup *shgroup, const char *name, const GPUUniformBuf *ubo)
void DRW_view_persmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
const DRWView * DRW_view_default_get(void)
void DRW_shgroup_call_instances(DRWShadingGroup *shgroup, Object *ob, struct GPUBatch *geom, uint count)
void DRW_shgroup_uniform_block_ref(DRWShadingGroup *shgroup, const char *name, GPUUniformBuf **ubo)
void DRW_shgroup_uniform_vec3(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
DRWCallBuffer * DRW_shgroup_call_buffer_instance(DRWShadingGroup *shgroup, struct GPUVertFormat *format, GPUBatch *geom)
void DRW_shgroup_call_procedural_triangles(DRWShadingGroup *shgroup, Object *ob, uint tri_count)
void DRW_shgroup_uniform_ivec3(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
void DRW_view_winmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_pass_sort_shgroup_z(DRWPass *pass)
DRWView * DRW_view_create(const float viewmat[4][4], const float winmat[4][4], const float(*culling_viewmat)[4], const float(*culling_winmat)[4], DRWCallVisibilityFn *visibility_fn)
DRWView * DRW_view_create_sub(const DRWView *parent_view, const float viewmat[4][4], const float winmat[4][4])
void DRW_view_update(DRWView *view, const float viewmat[4][4], const float winmat[4][4], const float(*culling_viewmat)[4], const float(*culling_winmat)[4])
DRWShadingGroup * DRW_shgroup_create(struct GPUShader *shader, DRWPass *pass)
void DRW_shgroup_uniform_int(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
void DRW_view_clip_planes_set(DRWView *view, float(*planes)[4], int plane_len)
void DRW_shgroup_uniform_texture_ref(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex)
void DRW_shgroup_uniform_float(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
void DRW_view_update_sub(DRWView *view, const float viewmat[4][4], const float winmat[4][4])
void DRW_view_viewmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_view_set_active(DRWView *view)
void DRW_draw_pass(DRWPass *pass)
bool DRW_culling_box_test(const DRWView *view, const BoundBox *bbox)
void DRW_stats_group_start(const char *name)
void DRW_stats_group_end(void)
GPUTexture * DRW_texture_create_2d_array(int w, int h, int d, eGPUTextureFormat format, DRWTextureFlag flags, const float *fpixels)
EEVEE_LightProbeEngineData * EEVEE_lightprobe_data_ensure(Object *ob)
void EEVEE_create_minmax_buffer(EEVEE_Data *vedata, GPUTexture *depth_src, int layer)
void EEVEE_downsample_cube_buffer(EEVEE_Data *vedata, GPUTexture *texture_src, int level)
LightCache * EEVEE_lightcache_create(const int grid_len, const int cube_len, const int cube_size, const int vis_size, const int irr_size[3])
bool EEVEE_lightcache_load(LightCache *lcache)
void EEVEE_lightbake_update_world_quick(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, const Scene *scene)
static void lightbake_render_scene_reflected(int layer, EEVEE_BakeRenderData *user_data)
void EEVEE_lightprobes_free(void)
void EEVEE_lightprobes_cache_finish(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
void EEVEE_lightbake_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, GPUTexture *rt_color, GPUTexture *rt_depth)
static void render_cubemap(void(*callback)(int face, EEVEE_BakeRenderData *user_data), EEVEE_BakeRenderData *user_data, const float pos[3], float near, float far, bool do_culling)
struct EEVEE_BakeRenderData EEVEE_BakeRenderData
void EEVEE_lightprobes_cube_data_from_object(Object *ob, EEVEE_LightProbe *eprobe)
void EEVEE_lightbake_render_world(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, struct GPUFrameBuffer *face_fb[6])
bool EEVEE_lightprobes_obj_visibility_cb(bool vis_in, void *user_data)
void EEVEE_lightprobes_refresh(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
void EEVEE_lightprobes_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
void EEVEE_lightprobes_planar_data_from_object(Object *ob, EEVEE_PlanarReflection *eplanar, EEVEE_LightProbeVisTest *vis_test)
void EEVEE_lightprobes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
static struct @193 e_data
static bool eevee_lightprobes_culling_test(Object *ob)
struct GPUVertFormat * format_probe_display_planar
struct GPUTexture * planar_pool_placeholder
static void render_reflections(void(*callback)(int face, EEVEE_BakeRenderData *user_data), EEVEE_BakeRenderData *user_data, EEVEE_PlanarReflection *planar_data, int ref_count)
static void eevee_lightprobes_extract_from_cache(EEVEE_LightProbesInfo *pinfo, LightCache *lcache)
void EEVEE_lightprobes_grid_data_from_object(Object *ob, EEVEE_LightGrid *egrid, int *offset)
static void EEVEE_lightbake_filter_planar(EEVEE_Data *vedata)
void EEVEE_lightbake_render_scene(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, struct GPUFrameBuffer *face_fb[6], const float pos[3], float near_clip, float far_clip)
static void lightbake_render_scene_face(int face, EEVEE_BakeRenderData *user_data)
void EEVEE_lightbake_filter_diffuse(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, struct GPUTexture *rt_color, struct GPUFrameBuffer *fb, int grid_offset, float intensity)
void EEVEE_lightprobes_cache_add(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object *ob)
void EEVEE_lightprobes_refresh_planar(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
struct GPUTexture * depth_placeholder
static void lightbake_planar_ensure_view(EEVEE_PlanarReflection *eplanar, const DRWView *main_view, DRWView **r_planar_view)
static void downsample_planar(void *vedata, int level)
void EEVEE_lightbake_filter_visibility(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, struct GPUTexture *UNUSED(rt_depth), struct GPUFrameBuffer *fb, int grid_offset, float clipsta, float clipend, float vis_range, float vis_blur, int vis_size)
static void lightbake_render_world_face(int face, EEVEE_BakeRenderData *user_data)
static void planar_pool_ensure_alloc(EEVEE_Data *vedata, int num_planar_ref)
void EEVEE_lightbake_filter_glossy(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, struct GPUTexture *rt_color, struct GPUFrameBuffer *fb, int probe_idx, float intensity, int maxlevel, float filter_quality, float firefly_fac)
static void eevee_lightbake_render_scene_to_planars(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
struct GPUTexture * depth_array_placeholder
void EEVEE_lookdev_cache_init(EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, DRWPass *pass, EEVEE_LightProbesInfo *pinfo, DRWShadingGroup **r_shgrp)
void EEVEE_occlusion_compute(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
struct GPUShader * EEVEE_shaders_probe_planar_display_sh_get(void)
#define MAX_SCREEN_BUFFERS_LOD_LEVEL
struct GPUShader * EEVEE_shaders_probe_grid_fill_sh_get(void)
#define LOOK_DEV_STUDIO_LIGHT_ENABLED(v3d)
World * EEVEE_world_default_get(void)
struct GPUShader * EEVEE_shaders_probe_filter_visibility_sh_get(void)
struct GPUShader * EEVEE_shaders_probe_filter_diffuse_sh_get(void)
struct GPUShader * EEVEE_shaders_probe_cube_display_sh_get(void)
struct GPUShader * EEVEE_shaders_probe_planar_downsample_sh_get(void)
static const float cubefacemat[6][4][4]
void EEVEE_shadows_draw(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, struct DRWView *view)
struct GPUMaterial * EEVEE_material_get(EEVEE_Data *vedata, struct Scene *scene, Material *ma, World *wo, int options)
struct GPUShader * EEVEE_shaders_probe_filter_glossy_sh_get(void)
struct GPUShader * EEVEE_shaders_probe_grid_display_sh_get(void)
void EEVEE_shaders_material_shaders_init(void)
void GPU_framebuffer_recursive_downsample(GPUFrameBuffer *gpu_fb, int max_lvl, void(*callback)(void *userData, int level), void *userData)
void GPU_framebuffer_viewport_reset(GPUFrameBuffer *gpu_fb)
void GPU_framebuffer_viewport_set(GPUFrameBuffer *gpu_fb, int x, int y, int width, int height)
BLI_INLINE float fb(float length, float L)
void *(* MEM_callocN)(size_t len, const char *str)
INLINE Rall1d< T, V, S > log(const Rall1d< T, V, S > &arg)
const struct bContext * evil_C
struct Depsgraph * depsgraph
EEVEE_ViewLayerData * sldata
struct GPUFrameBuffer ** face_fb
EEVEE_FramebufferList * fbl
EEVEE_EffectsFlag enabled_effects
struct DRWView * taa_view
struct GPUFrameBuffer * planar_downsample_fb
struct GPUFrameBuffer * planarref_fb
struct Collection * collection
EEVEE_LightProbeVisTest vis_data
EEVEE_LightProbeVisTest planar_vis_tests[MAX_PLANAR]
EEVEE_LightGrid grid_data[MAX_GRID]
EEVEE_LightProbe probe_data[MAX_PROBE]
EEVEE_PlanarReflection planar_data[MAX_PLANAR]
EEVEE_LightProbeVisTest * test_data
struct DRWPass * material_sss_ps
struct DRWPass * probe_planar_downsample_ps
struct DRWPass * transparent_pass
struct DRWPass * depth_clip_ps
struct DRWPass * depth_ps
struct DRWPass * material_refract_ps
struct DRWPass * probe_background
struct DRWPass * probe_diffuse_compute
struct DRWPass * material_ps
struct DRWPass * depth_refract_clip_ps
struct DRWPass * probe_display
struct DRWPass * probe_glossy_compute
struct DRWPass * probe_grid_fill
struct DRWPass * probe_visibility_compute
float planar_texel_size[2]
struct DRWView * bake_views[6]
struct GPUUniformBuf * renderpass_ubo
struct DRWView * cube_views[6]
struct DRWView * world_views[6]
struct LightCache * light_cache
struct DRWView * planar_views[MAX_PLANAR]
struct DRWCallBuffer * planar_display_shgrp
struct EEVEE_PrivateData * g_data
struct EEVEE_EffectsInfo * effects
struct GPUTexture * planar_depth
struct GPUTexture * planar_pool
struct EEVEE_CommonUniformBuffer common_data
struct GPUUniformBuf * combined
struct GPUUniformBuf * shadow_ubo
struct GPUUniformBuf * probe_ubo
struct GPUUniformBuf * grid_ubo
struct GPUUniformBuf * planar_ubo
struct EEVEE_ViewLayerData::@202 renderpass_ubo
struct LightCache * fallback_lightcache
struct GPUUniformBuf * common_ubo
struct GPUUniformBuf * light_ubo
struct EEVEE_LightProbesInfo * probes
LightGridCache * grid_data
LightProbeCache * cube_data
LightCacheTexture grid_tx
LightCacheTexture cube_tx
float attenuationmat[4][4]
struct Collection * visibility_grp
float gi_irradiance_smoothing
struct LightCache * light_cache_data
int gi_visibility_resolution
float gi_irradiance_draw_size
float gi_cubemap_draw_size
int gi_cubemap_resolution
void WM_event_add_notifier(const bContext *C, uint type, void *reference)