69 const float *refract_depth,
70 const float alpha_clip_threshold,
71 bool use_ssrefraction,
81 use_diffuse = use_glossy = use_refract = use_ao =
true;
99 if (use_diffuse || use_glossy || use_refract) {
103 if (use_diffuse || use_glossy || use_refract || use_ao) {
106 if ((use_diffuse || use_glossy) && !use_ssrefraction) {
112 if (use_glossy || use_refract) {
124 shgrp,
"refractionDepth", (refract_depth) ? *refract_depth : 0.0);
125 if (use_ssrefraction) {
130 if (use_alpha_blend) {
141 #define RUNTIME_LUT_CREATION 0
145 const int layers = 4 + 16;
146 float(*texels)[4] =
MEM_mallocN(
sizeof(
float[4]) * 64 * 64 * layers,
"utils texels");
147 float(*texels_layer)[4] = texels;
148 #if RUNTIME_LUT_CREATION
157 memcpy(texels_layer,
ltc_mat_ggx,
sizeof(
float[4]) * 64 * 64);
158 texels_layer += 64 * 64;
162 for (
int i = 0; i < 64 * 64; i++) {
163 texels_layer[i][0] = bsdf_ggx_lut[i * 2 + 0];
164 texels_layer[i][1] = bsdf_ggx_lut[i * 2 + 1];
168 texels_layer += 64 * 64;
171 for (
int i = 0; i < 64 * 64; i++) {
177 texels_layer += 64 * 64;
180 for (
int i = 0; i < 64 * 64; i++) {
182 texels_layer[i][1] = 0.0;
183 texels_layer[i][2] = 0.0;
184 texels_layer[i][3] = 0.0;
186 texels_layer += 64 * 64;
189 for (
int j = 0; j < 16; j++) {
190 for (
int i = 0; i < 64 * 64; i++) {
191 texels_layer[i][0] = btdf_ggx_lut[j][i * 2 + 0];
192 texels_layer[i][1] = btdf_ggx_lut[j][i * 2 + 1];
193 texels_layer[i][2] = 0.0;
194 texels_layer[i][3] = 0.0;
196 texels_layer += 64 * 64;
203 #if RUNTIME_LUT_CREATION
211 e_data.noise_offsets[0] = offsets[0];
212 e_data.noise_offsets[1] = offsets[1];
213 e_data.noise_offsets[2] = offsets[2];
247 GPU_framebuffer_ensure_config(
249 {GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE_LAYER(e_data.util_tex, 2)});
258 sizeof(
data), &
data,
"renderpass_ubo.combined");
262 sizeof(
data), &
data,
"renderpass_ubo.diff_color");
266 sizeof(
data), &
data,
"renderpass_ubo.diff_light");
270 sizeof(
data), &
data,
"renderpass_ubo.spec_color");
274 sizeof(
data), &
data,
"renderpass_ubo.spec_light");
278 sizeof(
data), &
data,
"renderpass_ubo.emit");
282 sizeof(
data), &
data,
"renderpass_ubo.environment");
289 g_data->num_aovs_used = 0;
308 sizeof(
data), &
data,
"renderpass_ubo.aovs");
312 g_data->num_aovs_used = aov_index;
322 sizeof(
data), &
data,
"renderpass_ubo.aovs");
324 g_data->num_aovs_used = 1;
328 for (
int aov_index =
g_data->num_aovs_used; aov_index <
MAX_AOVS; aov_index++) {
400 #define EEVEE_PASS_CREATE(pass, state) \
402 DRW_PASS_CREATE(psl->pass##_ps, state); \
403 DRW_PASS_CREATE(psl->pass##_cull_ps, state | DRW_STATE_CULL_BACK); \
404 DRW_pass_link(psl->pass##_ps, psl->pass##_cull_ps); \
407 #define EEVEE_CLIP_PASS_CREATE(pass, state) \
409 DRWState st = state | DRW_STATE_CLIP_PLANES; \
410 DRW_PASS_INSTANCE_CREATE(psl->pass##_clip_ps, psl->pass##_ps, st); \
411 DRW_PASS_INSTANCE_CREATE( \
412 psl->pass##_clip_cull_ps, psl->pass##_cull_ps, st | DRW_STATE_CULL_BACK); \
413 DRW_pass_link(psl->pass##_clip_ps, psl->pass##_clip_cull_ps); \
442 for (
int i = 0; i <
ARRAY_SIZE(passes); i++) {
501 void *cache_key = (
char *)
sh + option;
512 grp, gpumat, sldata, vedata,
NULL,
NULL, alpha_clip_threshold,
false,
false);
546 void *key = (
char *)ma + is_hair;
581 void *cache_key = (
char *)
sh + option;
592 grp, gpumat, sldata, vedata,
NULL,
NULL, alpha_clip_threshold,
false,
false);
609 int option = (use_ssrefract ? 0 : (use_sss ? 1 : 2)) * 2 + do_cull;
619 option = option * 2 + is_hair;
626 void *cache_key = (
char *)
sh + option;
647 alpha_clip_threshold,
717 grp, gpumat, sldata, vedata, &ssr_id, &ma->
refract_depth, -1.0f, use_ssrefract,
true);
776 #define ADD_SHGROUP_CALL(shgrp, ob, geom, oedata) \
779 DRW_shgroup_call_with_callback(shgrp, geom, ob, oedata); \
782 DRW_shgroup_call(shgrp, geom, ob); \
786 #define ADD_SHGROUP_CALL_SAFE(shgrp, ob, geom, oedata) \
789 ADD_SHGROUP_CALL(shgrp, ob, geom, oedata); \
793 #define MATCACHE_AS_ARRAY(matcache, member, materials_len, output_array) \
794 for (int i = 0; i < materials_len; i++) { \
795 output_array[i] = matcache[i].member; \
814 for (
int i = 0; i < materials_len; i++) {
825 if (use_sculpt_pbvh) {
842 ob, gpumat_array, materials_len);
845 for (
int i = 0; i < materials_len; i++) {
846 if (mat_geom[i] ==
NULL) {
852 if (use_volume_material &&
879 if (use_volume_material) {
908 vedata, sldata, ob, part->
omat - 1,
true);
1008 {GPU_ATTACHMENT_TEXTURE(dtxl->depth), GPU_ATTACHMENT_LEAVE});
1026 for (
int aov_index = 0; aov_index < pd->
num_aovs_used; aov_index++) {
1051 const float clear[4] = {0.0f, 0.0f, 0.0f, 0.0f};
1078 background_accum_ps,
1143 for (
int aov_index = 0; aov_index < pd->
num_aovs_used; aov_index++) {
1147 background_accum_ps,
typedef float(TangentPoint)[2]
struct Material * BKE_material_default_surface(void)
struct Material * BKE_material_default_holdout(void)
struct Material * BKE_object_material_get_eval(struct Object *ob, short act)
struct Material * BKE_material_default_volume(void)
bool BKE_sculptsession_use_pbvh_draw(const struct Object *ob, const struct RegionView3D *rv3d)
#define BLI_array_alloca(arr, realsize)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
GHash * BLI_ghash_ptr_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BLI_ghash_ensure_p(GHash *gh, void *key, void ***r_val) ATTR_WARN_UNUSED_RESULT
#define LISTBASE_FOREACH(type, var, list)
#define BLI_memblock_create(elem_size)
void * BLI_memblock_alloc(BLI_memblock *mblk) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_memblock_clear(BLI_memblock *mblk, MemblockValFreeFP free_callback) ATTR_NONNULL(1)
void BLI_halton_1d(unsigned int prime, double offset, int n, double *r)
#define SET_FLAG_FROM_TEST(value, test, flag)
#define CURVES_MATERIAL_NR
@ EEVEE_RENDER_PASS_DIFFUSE_LIGHT
@ EEVEE_RENDER_PASS_DIFFUSE_COLOR
@ EEVEE_RENDER_PASS_ENVIRONMENT
@ EEVEE_RENDER_PASS_SPECULAR_LIGHT
@ EEVEE_RENDER_PASS_SPECULAR_COLOR
@ eModifierType_ParticleSystem
#define DRW_PASS_INSTANCE_CREATE(pass, original, state)
@ DRW_STATE_STENCIL_ALWAYS
@ DRW_STATE_BLEND_ADD_FULL
@ DRW_STATE_DEPTH_LESS_EQUAL
@ DRW_STATE_WRITE_STENCIL
#define DRW_UBO_FREE_SAFE(ubo)
#define DRW_shgroup_uniform_block_ref(shgroup, name, ubo)
#define DRW_PASS_CREATE(pass, state)
#define DRW_shgroup_uniform_block(shgroup, name, ubo)
#define DRW_shgroup_call(shgroup, geom, ob)
#define DRW_TEXTURE_FREE_SAFE(tex)
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
void GPU_framebuffer_texture_detach(GPUFrameBuffer *fb, struct GPUTexture *tex)
_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 GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
struct GPUShader * GPU_material_get_shader(GPUMaterial *material)
bool GPU_material_has_surface_output(GPUMaterial *mat)
bool GPU_material_flag_get(const GPUMaterial *mat, eGPUMaterialFlag flag)
bool GPU_material_has_volume_output(GPUMaterial *mat)
struct GPUShader GPUShader
struct GPUTexture GPUTexture
CCL_NAMESPACE_BEGIN struct Options options
GPUBatch ** DRW_cache_object_surface_material_get(struct Object *ob, struct GPUMaterial **gpumat_array, uint gpumat_array_len)
GPUBatch * DRW_cache_fullscreen_quad_get(void)
int DRW_cache_object_material_count_get(struct Object *ob)
struct DRWShadingGroup * DRW_shgroup_curves_create_sub(struct Object *object, struct DRWShadingGroup *shgrp, struct GPUMaterial *gpu_material)
struct DRWShadingGroup * DRW_shgroup_hair_create_sub(struct Object *object, struct ParticleSystem *psys, struct ModifierData *md, struct DRWShadingGroup *shgrp, struct GPUMaterial *gpu_material)
bool DRW_object_is_visible_psys_in_active_context(const Object *object, const ParticleSystem *psys)
const DRWContextState * DRW_context_state_get(void)
bool DRW_state_is_image_render(void)
bool DRW_state_is_scene_render(void)
DefaultTextureList * DRW_viewport_texture_list_get(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_state_disable(DRWShadingGroup *shgroup, DRWState state)
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
void DRW_shgroup_state_enable(DRWShadingGroup *shgroup, DRWState state)
void DRW_pass_link(DRWPass *first, DRWPass *second)
void DRW_shgroup_uniform_vec3(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
DRWPass * DRW_pass_create_instance(const char *name, DRWPass *original, DRWState state)
void DRW_shgroup_uniform_int_copy(DRWShadingGroup *shgroup, const char *name, const int value)
DRWShadingGroup * DRW_shgroup_create(struct GPUShader *shader, DRWPass *pass)
void DRW_shgroup_add_material_resources(DRWShadingGroup *grp, struct GPUMaterial *material)
DRWShadingGroup * DRW_shgroup_create_sub(DRWShadingGroup *shgroup)
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_shgroup_call_sculpt_with_materials(DRWShadingGroup **shgroups, int num_shgroups, Object *ob)
void DRW_draw_pass(DRWPass *pass)
void DRW_texture_ensure_fullscreen_2d(GPUTexture **tex, eGPUTextureFormat format, DRWTextureFlag flags)
GPUTexture * DRW_texture_create_2d_array(int w, int h, int d, eGPUTextureFormat format, DRWTextureFlag flags, const float *fpixels)
GPUTexture * DRW_texture_create_2d(int w, int h, eGPUTextureFormat format, DRWTextureFlag flags, const float *fpixels)
static struct @318 g_data
EEVEE_ObjectEngineData * EEVEE_object_data_ensure(Object *ob)
depth_tx normal_tx diffuse_light_tx specular_light_tx volume_light_tx environment_tx ambient_occlusion_tx aov_value_tx in_weight_img GPU_RGBA16F
void EEVEE_lookdev_cache_init(EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, DRWPass *pass, EEVEE_LightProbesInfo *pinfo, DRWShadingGroup **r_shgrp)
const float blue_noise[64 *64][4]
const float btdf_split_sum_ggx[16][64 *64 *2]
const float bsdf_split_sum_ggx[64 *64 *2]
const float ltc_mag_ggx[64 *64 *2]
const float ltc_disk_integral[64 *64]
const float ltc_mat_ggx[64 *64 *4]
float * EEVEE_lut_update_ggx_brdf(int lut_size)
float * EEVEE_lut_update_ggx_btdf(int lut_size, int lut_depth)
struct EeveeMaterialCache EeveeMaterialCache
void EEVEE_update_noise(EEVEE_PassList *psl, EEVEE_FramebufferList *fbl, const double offsets[3])
void EEVEE_material_bind_resources(DRWShadingGroup *shgrp, GPUMaterial *gpumat, EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, const int *ssr_id, const float *refract_depth, const float alpha_clip_threshold, bool use_ssrefraction, bool use_alpha_blend)
BLI_INLINE void material_shadow(EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Material *ma, bool is_hair, EeveeMaterialCache *emc)
#define EEVEE_CLIP_PASS_CREATE(pass, state)
void EEVEE_materials_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
static EeveeMaterialCache material_opaque(EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Material *ma, const bool is_hair)
#define EEVEE_PASS_CREATE(pass, state)
struct GPUTexture * noise_tex
#define ADD_SHGROUP_CALL(shgrp, ob, geom, oedata)
void EEVEE_materials_cache_populate(EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Object *ob, bool *cast_shadow)
static struct @202 e_data
struct GPUTexture * util_tex
static EeveeMaterialCache material_transparent(EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Material *ma)
#define ADD_SHGROUP_CALL_SAFE(shgrp, ob, geom, oedata)
static void material_renderpass_init(GPUTexture **output_tx, const eGPUTextureFormat format)
static void eevee_init_util_texture(void)
void EEVEE_materials_cache_finish(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
void EEVEE_materials_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, EEVEE_StorageList *stl, EEVEE_FramebufferList *fbl)
BLI_INLINE Material * eevee_object_material_get(Object *ob, int slot, bool holdout)
BLI_INLINE EeveeMaterialCache eevee_material_cache_get(EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Object *ob, int slot, bool is_hair)
void EEVEE_material_renderpasses_init(EEVEE_Data *vedata)
void EEVEE_material_output_accumulate(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
static void eevee_init_noise_texture(void)
void EEVEE_materials_free(void)
void EEVEE_particle_hair_cache_populate(EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Object *ob, bool *cast_shadow)
void EEVEE_material_output_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples)
void EEVEE_object_curves_cache_populate(EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Object *ob, bool *cast_shadow)
#define MATCACHE_AS_ARRAY(matcache, member, materials_len, output_array)
struct GPUTexture * EEVEE_materials_get_util_tex(void)
static void material_renderpass_accumulate(EEVEE_EffectsInfo *effects, EEVEE_FramebufferList *fbl, DRWPass *renderpass, DRWPass *renderpass2, EEVEE_PrivateData *pd, GPUTexture *output_tx, struct GPUUniformBuf *renderpass_option_ubo)
void EEVEE_motion_blur_cache_populate(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, Object *ob)
void EEVEE_motion_blur_curves_cache_populate(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, Object *ob)
void EEVEE_motion_blur_hair_cache_populate(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, Object *ob, ParticleSystem *psys, ModifierData *md)
World * EEVEE_world_default_get(void)
void EEVEE_volumes_cache_object_add(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, struct Scene *scene, Object *ob)
void EEVEE_reflection_output_accumulate(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
void EEVEE_reflection_output_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples)
void EEVEE_subsurface_add_pass(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Material *ma, DRWShadingGroup *shgrp, struct GPUMaterial *gpumat)
void EEVEE_subsurface_output_accumulate(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
struct GPUMaterial * EEVEE_material_default_get(struct Scene *scene, Material *ma, int options)
uint EEVEE_renderpasses_aov_hash(const ViewLayerAOV *aov)
struct GPUMaterial * EEVEE_material_get(EEVEE_Data *vedata, struct Scene *scene, Material *ma, World *wo, int options)
struct GPUShader * EEVEE_shaders_update_noise_sh_get(void)
struct EEVEE_RenderPassData EEVEE_RenderPassData
#define EEVEE_AOV_HASH_ALL
void EEVEE_shaders_material_shaders_init(void)
void GPU_framebuffer_texture_attach(GPUFrameBuffer *fb, GPUTexture *tex, int slot, int mip)
ccl_gpu_kernel_postfix ccl_global float int int int int sh
void(* MEM_freeN)(void *vmemh)
void *(* MEM_mallocN)(size_t len, const char *str)
static void clear(Message *msg)
struct ViewLayer * view_layer
struct Object * object_edit
struct RegionView3D * rv3d
EEVEE_FramebufferList * fbl
struct GPUTexture * gtao_horizons
struct GPUTexture * volume_transmit
struct GPUTexture * volume_scatter
EEVEE_EffectsFlag enabled_effects
struct GPUFrameBuffer * main_fb
struct GPUFrameBuffer * update_noise_fb
struct GPUFrameBuffer * material_accum_fb
EEVEE_LightProbeVisTest vis_data
EEVEE_LightProbeVisTest * test_data
struct DRWPass * material_sss_ps
struct DRWPass * transparent_pass
struct DRWPass * depth_cull_ps
struct DRWPass * depth_refract_ps
struct DRWPass * material_accum_ps
struct DRWPass * depth_ps
struct DRWPass * material_refract_ps
struct DRWPass * material_sss_cull_ps
struct DRWPass * depth_refract_cull_ps
struct DRWPass * material_ps
struct DRWPass * background_accum_ps
struct DRWPass * update_noise_pass
struct DRWPass * shadow_pass
struct DRWPass * material_cull_ps
struct DRWPass * material_refract_cull_ps
struct DRWPass * background_ps
struct GPUUniformBuf * renderpass_ubo
eViewLayerEEVEEPassType render_passes
struct LightCache * light_cache
struct GHash * material_hash
struct EEVEE_PrivateData * g_data
struct EEVEE_EffectsInfo * effects
struct GPUTexture * filtered_radiance
struct GPUTexture * spec_color_accum
struct GPUTexture * maxzbuffer
struct GPUTexture * diff_light_accum
struct GPUTexture * emit_accum
struct GPUTexture * planar_pool
struct GPUTexture * diff_color_accum
struct GPUTexture * spec_light_accum
struct GPUTexture * env_accum
struct GPUTexture * aov_surface_accum[MAX_AOVS]
struct EEVEE_CommonUniformBuffer common_data
struct GPUTexture * shadow_cube_pool
struct GPUUniformBuf * combined
struct GPUUniformBuf * diff_light
struct GPUUniformBuf * shadow_ubo
struct GPUUniformBuf * probe_ubo
struct GPUUniformBuf * grid_ubo
struct GPUUniformBuf * emit
struct GPUUniformBuf * planar_ubo
struct EEVEE_ViewLayerData::@210 renderpass_ubo
struct GPUUniformBuf * spec_color
struct GPUUniformBuf * environment
struct GPUUniformBuf * diff_color
struct GPUUniformBuf * spec_light
struct GPUUniformBuf * common_ubo
struct BLI_memblock * material_cache
struct GPUUniformBuf * light_ubo
struct GPUUniformBuf * aovs[MAX_AOVS]
struct GPUTexture * shadow_cascade_pool
struct EEVEE_LightProbesInfo * probes
struct DRWShadingGroup * depth_grp
struct DRWShadingGroup * shading_grp
struct GPUMaterial * shading_gpumat
struct DRWShadingGroup ** shadow_grp_p
struct DRWShadingGroup * shadow_grp
struct DRWShadingGroup ** depth_grp_p
struct DRWShadingGroup ** shading_grp_p
LightCacheTexture grid_tx
LightCacheTexture cube_tx
struct bNodeTree * nodetree