Blender  V3.3
Classes | Macros | Typedefs | Enumerations | Functions | Variables
#include "DRW_render.h"
#include "BLI_bitmap.h"
#include "DNA_lightprobe_types.h"
#include "GPU_viewport.h"
#include "BKE_camera.h"

Go to the source code of this file.

Classes

struct  EEVEE_PlanarReflection
 
struct  EEVEE_BoundBox
 
struct  EEVEE_PassList
 
struct  EEVEE_FramebufferList
 
struct  EEVEE_TextureList
 
struct  EEVEE_StorageList
 
struct  EEVEE_RenderPassData
 
struct  EEVEE_Light
 
struct  EEVEE_Shadow
 
struct  EEVEE_ShadowCube
 
struct  EEVEE_ShadowCascade
 
struct  EEVEE_ShadowCascadeRender
 
struct  EEVEE_LightsInfo
 
struct  EEVEE_LightProbeVisTest
 
struct  EEVEE_LightProbesInfo
 
struct  EEVEE_MotionBlurData
 
struct  EEVEE_ObjectKey
 
struct  EEVEE_HairMotionStepData
 
struct  EEVEE_HairMotionData
 
struct  EEVEE_GeometryMotionData
 
struct  EEVEE_ObjectMotionData
 
struct  EEVEE_EffectsInfo
 
struct  EEVEE_CommonUniformBuffer
 
struct  EEVEE_ViewLayerData
 
struct  EEVEE_LightEngineData
 
struct  EEVEE_LightProbeEngineData
 
struct  EEVEE_ObjectEngineData
 
struct  EEVEE_WorldEngineData
 
struct  EEVEE_CryptomatteSample
 
struct  EEVEE_Data
 
struct  EEVEE_PrivateData
 

Macros

#define MAX_PROBE   128 /* TODO: find size by dividing UBO max size by probe data size. */
 
#define MAX_GRID   64 /* TODO: find size by dividing UBO max size by grid data size. */
 
#define MAX_PLANAR   16 /* TODO: find size by dividing UBO max size by grid data size. */
 
#define MAX_LIGHT   128 /* TODO: find size by dividing UBO max size by light data size. */
 
#define MAX_CASCADE_NUM   4
 
#define MAX_SHADOW   128 /* TODO: Make this depends on #GL_MAX_ARRAY_TEXTURE_LAYERS. */
 
#define MAX_SHADOW_CASCADE   8
 
#define MAX_SHADOW_CUBE   (MAX_SHADOW - MAX_CASCADE_NUM * MAX_SHADOW_CASCADE)
 
#define MAX_BLOOM_STEP   16
 
#define MAX_AOVS   64
 
#define TAA_MAX_SAMPLE   10000926
 
#define IRRADIANCE_HL2
 
#define SHADER_IRRADIANCE   "#define IRRADIANCE_HL2\n"
 
#define SHADER_DEFINES
 
#define EEVEE_PROBE_MAX   min_ii(MAX_PROBE, GPU_max_texture_layers() / 6)
 
#define EEVEE_VELOCITY_TILE_SIZE   32
 
#define USE_VOLUME_OPTI   (GPU_shader_image_load_store_support())
 
#define SWAP_DOUBLE_BUFFERS()
 
#define SWAP_BUFFERS()
 
#define SWAP_BUFFERS_TAA()
 
#define USE_SCENE_LIGHT(v3d)
 
#define LOOK_DEV_STUDIO_LIGHT_ENABLED(v3d)
 
#define MIN_CUBE_LOD_LEVEL   3
 
#define MAX_SCREEN_BUFFERS_LOD_LEVEL   6
 
#define EEVEE_RENDERPASSES_MATERIAL
 
#define EEVEE_AOV_HASH_ALL   -1
 
#define EEVEE_AOV_HASH_COLOR_TYPE_MASK   1
 
#define MAX_CRYPTOMATTE_LAYERS   3
 
#define DOF_TILE_DIVISOR   16
 
#define DOF_BOKEH_LUT_SIZE   32
 
#define DOF_GATHER_RING_COUNT   5
 
#define DOF_DILATE_RING_COUNT   3
 
#define DOF_FAST_GATHER_COC_ERROR   0.05
 
#define DOF_SHADER_DEFINES
 
#define LAMPTYPE_AREA_ELLIPSE   100.0f
 
#define MB_PREV   0
 
#define MB_NEXT   1
 
#define MB_CURR   2
 
#define EEVEE_RAY_CAMERA   0
 
#define EEVEE_RAY_SHADOW   1
 
#define EEVEE_RAY_DIFFUSE   2
 
#define EEVEE_RAY_GLOSSY   3
 

Typedefs

typedef enum EEVEE_DofGatherPass EEVEE_DofGatherPass
 
typedef LightProbeCache EEVEE_LightProbe
 
typedef LightGridCache EEVEE_LightGrid
 
typedef struct EEVEE_PlanarReflection EEVEE_PlanarReflection
 
typedef struct EEVEE_BoundBox EEVEE_BoundBox
 
typedef struct EEVEE_PassList EEVEE_PassList
 
typedef struct EEVEE_FramebufferList EEVEE_FramebufferList
 
typedef struct EEVEE_TextureList EEVEE_TextureList
 
typedef struct EEVEE_StorageList EEVEE_StorageList
 
typedef struct EEVEE_RenderPassData EEVEE_RenderPassData
 
typedef struct EEVEE_Light EEVEE_Light
 
typedef struct EEVEE_Shadow EEVEE_Shadow
 
typedef struct EEVEE_ShadowCube EEVEE_ShadowCube
 
typedef struct EEVEE_ShadowCascade EEVEE_ShadowCascade
 
typedef struct EEVEE_ShadowCascadeRender EEVEE_ShadowCascadeRender
 
typedef struct EEVEE_LightsInfo EEVEE_LightsInfo
 
typedef struct EEVEE_LightProbeVisTest EEVEE_LightProbeVisTest
 
typedef struct EEVEE_LightProbesInfo EEVEE_LightProbesInfo
 
typedef struct EEVEE_MotionBlurData EEVEE_MotionBlurData
 
typedef struct EEVEE_ObjectKey EEVEE_ObjectKey
 
typedef enum eEEVEEMotionData eEEVEEMotionData
 
typedef struct EEVEE_HairMotionStepData EEVEE_HairMotionStepData
 
typedef struct EEVEE_HairMotionData EEVEE_HairMotionData
 
typedef struct EEVEE_GeometryMotionData EEVEE_GeometryMotionData
 
typedef struct EEVEE_ObjectMotionData EEVEE_ObjectMotionData
 
typedef enum EEVEE_EffectsFlag EEVEE_EffectsFlag
 
typedef struct EEVEE_EffectsInfo EEVEE_EffectsInfo
 
typedef struct EEVEE_CommonUniformBuffer EEVEE_CommonUniformBuffer
 
typedef struct EEVEE_ViewLayerData EEVEE_ViewLayerData
 
typedef struct EEVEE_LightEngineData EEVEE_LightEngineData
 
typedef struct EEVEE_LightProbeEngineData EEVEE_LightProbeEngineData
 
typedef struct EEVEE_ObjectEngineData EEVEE_ObjectEngineData
 
typedef struct EEVEE_WorldEngineData EEVEE_WorldEngineData
 
typedef struct EEVEE_CryptomatteSample EEVEE_CryptomatteSample
 
typedef struct EEVEE_Data EEVEE_Data
 
typedef struct EEVEE_PrivateData EEVEE_PrivateData
 

Enumerations

enum  {
  VAR_MAT_MESH = (1 << 0) , VAR_MAT_VOLUME = (1 << 1) , VAR_MAT_HAIR = (1 << 2) , VAR_MAT_POINTCLOUD = (1 << 3) ,
  VAR_MAT_BLEND = (1 << 4) , VAR_MAT_LOOKDEV = (1 << 5) , VAR_MAT_HOLDOUT = (1 << 6) , VAR_MAT_HASH = (1 << 7) ,
  VAR_MAT_DEPTH = (1 << 8) , VAR_MAT_REFRACT = (1 << 9) , VAR_WORLD_BACKGROUND = (1 << 10) , VAR_WORLD_PROBE = (1 << 11) ,
  VAR_WORLD_VOLUME = (1 << 12) , VAR_DEFAULT = (1 << 13)
}
 
enum  { KEY_CULL = (1 << 0) , KEY_REFRACT = (1 << 1) , KEY_HAIR = (1 << 2) , KEY_SHADOW = (1 << 3) }
 
enum  EEVEE_DofGatherPass { DOF_GATHER_FOREGROUND = 0 , DOF_GATHER_BACKGROUND = 1 , DOF_GATHER_HOLEFILL = 2 , DOF_GATHER_MAX_PASS }
 
enum  { PROBE_UPDATE_CUBE = (1 << 0) , PROBE_UPDATE_GRID = (1 << 1) , PROBE_UPDATE_ALL = 0xFFFFFF }
 
enum  eEEVEEMotionData { EEVEE_MOTION_DATA_MESH = 0 , EEVEE_MOTION_DATA_HAIR }
 
enum  EEVEE_EffectsFlag {
  EFFECT_MOTION_BLUR = (1 << 0) , EFFECT_BLOOM = (1 << 1) , EFFECT_DOF = (1 << 2) , EFFECT_VOLUMETRIC = (1 << 3) ,
  EFFECT_SSR = (1 << 4) , EFFECT_DOUBLE_BUFFER = (1 << 5) , EFFECT_REFRACT = (1 << 6) , EFFECT_GTAO = (1 << 7) ,
  EFFECT_TAA = (1 << 8) , EFFECT_POST_BUFFER = (1 << 9) , EFFECT_NORMAL_BUFFER = (1 << 10) , EFFECT_RADIANCE_BUFFER = (1 << 10) ,
  EFFECT_SSS = (1 << 11) , EFFECT_VELOCITY_BUFFER = (1 << 12) , EFFECT_TAA_REPROJECT = (1 << 13) , EFFECT_DEPTH_DOUBLE_BUFFER = (1 << 14)
}
 

Functions

BLI_INLINE bool eevee_hdri_preview_overlay_enabled (const View3D *v3d)
 
 BLI_STATIC_ASSERT (sizeof(EEVEE_Shadow) *MAX_SHADOW+sizeof(EEVEE_ShadowCascade) *MAX_SHADOW_CASCADE+sizeof(EEVEE_ShadowCube) *MAX_SHADOW_CUBE< 16384, "Shadow UBO is too big!!!") typedef struct EEVEE_ShadowCasterBuffer
 
void EEVEE_motion_blur_data_init (EEVEE_MotionBlurData *mb)
 
void EEVEE_motion_blur_data_free (EEVEE_MotionBlurData *mb)
 
void EEVEE_view_layer_data_free (void *storage)
 
void EEVEE_motion_hair_step_free (EEVEE_HairMotionStepData *step_data)
 
EEVEE_ViewLayerDataEEVEE_view_layer_data_get (void)
 
EEVEE_ViewLayerDataEEVEE_view_layer_data_ensure_ex (struct ViewLayer *view_layer)
 
EEVEE_ViewLayerDataEEVEE_view_layer_data_ensure (void)
 
EEVEE_ObjectEngineDataEEVEE_object_data_get (Object *ob)
 
EEVEE_ObjectEngineDataEEVEE_object_data_ensure (Object *ob)
 
EEVEE_ObjectMotionDataEEVEE_motion_blur_object_data_get (EEVEE_MotionBlurData *mb, Object *ob, bool is_psys)
 
EEVEE_GeometryMotionDataEEVEE_motion_blur_geometry_data_get (EEVEE_ObjectMotionData *mb_data)
 
EEVEE_HairMotionDataEEVEE_motion_blur_hair_data_get (EEVEE_ObjectMotionData *mb_data, Object *ob)
 
EEVEE_HairMotionDataEEVEE_motion_blur_curves_data_get (EEVEE_ObjectMotionData *mb_data)
 
EEVEE_LightProbeEngineDataEEVEE_lightprobe_data_get (Object *ob)
 
EEVEE_LightProbeEngineDataEEVEE_lightprobe_data_ensure (Object *ob)
 
EEVEE_LightEngineDataEEVEE_light_data_get (Object *ob)
 
EEVEE_LightEngineDataEEVEE_light_data_ensure (Object *ob)
 
EEVEE_WorldEngineDataEEVEE_world_data_get (World *wo)
 
EEVEE_WorldEngineDataEEVEE_world_data_ensure (World *wo)
 
void eevee_id_update (void *vedata, ID *id)
 
struct GPUTextureEEVEE_materials_get_util_tex (void)
 
void EEVEE_materials_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, EEVEE_StorageList *stl, EEVEE_FramebufferList *fbl)
 
void EEVEE_materials_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_materials_cache_populate (EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Object *ob, bool *cast_shadow)
 
void EEVEE_particle_hair_cache_populate (EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Object *ob, bool *cast_shadow)
 
void EEVEE_object_curves_cache_populate (EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Object *ob, bool *cast_shadow)
 
void EEVEE_materials_cache_finish (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_materials_free (void)
 
void EEVEE_update_noise (EEVEE_PassList *psl, EEVEE_FramebufferList *fbl, const double offsets[3])
 
void EEVEE_material_renderpasses_init (EEVEE_Data *vedata)
 
void EEVEE_material_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples)
 
void EEVEE_material_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_material_bind_resources (DRWShadingGroup *shgrp, struct 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)
 
void eevee_light_matrix_get (const EEVEE_Light *evli, float r_mat[4][4])
 
void EEVEE_lights_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_lights_cache_add (EEVEE_ViewLayerData *sldata, struct Object *ob)
 
void EEVEE_lights_cache_finish (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void eevee_contact_shadow_setup (const Light *la, EEVEE_Shadow *evsh)
 
void EEVEE_shadows_init (EEVEE_ViewLayerData *sldata)
 
void EEVEE_shadows_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_shadows_caster_register (EEVEE_ViewLayerData *sldata, struct Object *ob)
 
void EEVEE_shadows_update (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_shadows_cube_add (EEVEE_LightsInfo *linfo, EEVEE_Light *evli, struct Object *ob)
 
bool EEVEE_shadows_cube_setup (EEVEE_LightsInfo *linfo, const EEVEE_Light *evli, int sample_ofs)
 
void EEVEE_shadows_cascade_add (EEVEE_LightsInfo *linfo, EEVEE_Light *evli, struct Object *ob)
 
void EEVEE_shadows_draw (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, struct DRWView *view)
 
void EEVEE_shadows_draw_cubemap (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, int cube_index)
 
void EEVEE_shadows_draw_cascades (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, DRWView *view, int cascade_index)
 
void EEVEE_shadow_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples)
 
void EEVEE_shadow_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_sample_ball (int sample_ofs, float radius, float rsample[3])
 
void EEVEE_sample_rectangle (int sample_ofs, const float x_axis[3], const float y_axis[3], float size_x, float size_y, float rsample[3])
 
void EEVEE_sample_ellipse (int sample_ofs, const float x_axis[3], const float y_axis[3], float size_x, float size_y, float rsample[3])
 
void EEVEE_random_rotation_m4 (int sample_ofs, float scale, float r_mat[4][4])
 
void EEVEE_shaders_material_shaders_init (void)
 
struct DRWShaderLibraryEEVEE_shader_lib_get (void)
 
struct GPUShaderEEVEE_shaders_bloom_blit_get (bool high_quality)
 
struct GPUShaderEEVEE_shaders_bloom_downsample_get (bool high_quality)
 
struct GPUShaderEEVEE_shaders_bloom_upsample_get (bool high_quality)
 
struct GPUShaderEEVEE_shaders_bloom_resolve_get (bool high_quality)
 
struct GPUShaderEEVEE_shaders_depth_of_field_bokeh_get (void)
 
struct GPUShaderEEVEE_shaders_depth_of_field_setup_get (void)
 
struct GPUShaderEEVEE_shaders_depth_of_field_flatten_tiles_get (void)
 
struct GPUShaderEEVEE_shaders_depth_of_field_dilate_tiles_get (bool pass)
 
struct GPUShaderEEVEE_shaders_depth_of_field_downsample_get (void)
 
struct GPUShaderEEVEE_shaders_depth_of_field_reduce_get (bool is_copy_pass)
 
struct GPUShaderEEVEE_shaders_depth_of_field_gather_get (EEVEE_DofGatherPass pass, bool bokeh_tx)
 
struct GPUShaderEEVEE_shaders_depth_of_field_filter_get (void)
 
struct GPUShaderEEVEE_shaders_depth_of_field_scatter_get (bool is_foreground, bool bokeh_tx)
 
struct GPUShaderEEVEE_shaders_depth_of_field_resolve_get (bool use_bokeh_tx, bool use_hq_gather)
 
struct GPUShaderEEVEE_shaders_effect_color_copy_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_downsample_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_downsample_cube_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_minz_downlevel_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_maxz_downlevel_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_minz_downdepth_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_maxz_downdepth_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_minz_downdepth_layer_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_maxz_downdepth_layer_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_maxz_copydepth_layer_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_minz_copydepth_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_maxz_copydepth_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_mist_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_motion_blur_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_motion_blur_object_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_motion_blur_hair_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_motion_blur_velocity_tiles_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_motion_blur_velocity_tiles_expand_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_ambient_occlusion_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_ambient_occlusion_debug_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_reflection_trace_sh_get (void)
 
struct GPUShaderEEVEE_shaders_effect_reflection_resolve_sh_get (void)
 
struct GPUShaderEEVEE_shaders_renderpasses_post_process_sh_get (void)
 
struct GPUShaderEEVEE_shaders_cryptomatte_sh_get (bool is_hair)
 
struct GPUShaderEEVEE_shaders_shadow_sh_get (void)
 
struct GPUShaderEEVEE_shaders_shadow_accum_sh_get (void)
 
struct GPUShaderEEVEE_shaders_subsurface_first_pass_sh_get (void)
 
struct GPUShaderEEVEE_shaders_subsurface_second_pass_sh_get (void)
 
struct GPUShaderEEVEE_shaders_subsurface_translucency_sh_get (void)
 
struct GPUShaderEEVEE_shaders_volumes_clear_sh_get (void)
 
struct GPUShaderEEVEE_shaders_volumes_scatter_sh_get (void)
 
struct GPUShaderEEVEE_shaders_volumes_scatter_with_lights_sh_get (void)
 
struct GPUShaderEEVEE_shaders_volumes_integration_sh_get (void)
 
struct GPUShaderEEVEE_shaders_volumes_resolve_sh_get (bool accum)
 
struct GPUShaderEEVEE_shaders_volumes_accum_sh_get (void)
 
struct GPUShaderEEVEE_shaders_ggx_lut_sh_get (void)
 
struct GPUShaderEEVEE_shaders_ggx_refraction_lut_sh_get (void)
 
struct GPUShaderEEVEE_shaders_probe_filter_glossy_sh_get (void)
 
struct GPUShaderEEVEE_shaders_probe_filter_diffuse_sh_get (void)
 
struct GPUShaderEEVEE_shaders_probe_filter_visibility_sh_get (void)
 
struct GPUShaderEEVEE_shaders_probe_grid_fill_sh_get (void)
 
struct GPUShaderEEVEE_shaders_probe_planar_downsample_sh_get (void)
 
struct GPUShaderEEVEE_shaders_studiolight_probe_sh_get (void)
 
struct GPUShaderEEVEE_shaders_studiolight_background_sh_get (void)
 
struct GPUShaderEEVEE_shaders_probe_cube_display_sh_get (void)
 
struct GPUShaderEEVEE_shaders_probe_grid_display_sh_get (void)
 
struct GPUShaderEEVEE_shaders_probe_planar_display_sh_get (void)
 
struct GPUShaderEEVEE_shaders_update_noise_sh_get (void)
 
struct GPUShaderEEVEE_shaders_velocity_resolve_sh_get (void)
 
struct GPUShaderEEVEE_shaders_taa_resolve_sh_get (EEVEE_EffectsFlag enabled_effects)
 
struct bNodeTreeEEVEE_shader_default_surface_nodetree (Material *ma)
 
struct bNodeTreeEEVEE_shader_default_world_nodetree (World *wo)
 
MaterialEEVEE_material_default_diffuse_get (void)
 
MaterialEEVEE_material_default_glossy_get (void)
 
MaterialEEVEE_material_default_error_get (void)
 
WorldEEVEE_world_default_get (void)
 
struct GPUMaterialEEVEE_material_default_get (struct Scene *scene, Material *ma, int options)
 
struct GPUMaterialEEVEE_material_get (EEVEE_Data *vedata, struct Scene *scene, Material *ma, World *wo, int options)
 
void EEVEE_shaders_free (void)
 
void eevee_shader_extra_init (void)
 
void eevee_shader_extra_exit (void)
 
void eevee_shader_material_create_info_amend (GPUMaterial *gpumat, GPUCodegenOutput *codegen, char *frag, char *vert, char *geom, char *defines)
 
GPUShadereevee_shaders_sh_create_helper (const char *name, const char *vert_name, const char *frag_name, const char *defines, bool use_layered_rendering)
 
bool EEVEE_lightprobes_obj_visibility_cb (bool vis_in, void *user_data)
 
void EEVEE_lightprobes_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_lightprobes_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_lightprobes_cache_add (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object *ob)
 
void EEVEE_lightprobes_cache_finish (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_lightprobes_refresh (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_lightprobes_refresh_planar (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_lightprobes_free (void)
 
void EEVEE_lightbake_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, GPUTexture *rt_color, GPUTexture *rt_depth)
 
void EEVEE_lightbake_render_world (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, struct GPUFrameBuffer *face_fb[6])
 
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)
 
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)
 
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_lightbake_filter_visibility (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, struct GPUTexture *rt_depth, struct GPUFrameBuffer *fb, int grid_offset, float clipsta, float clipend, float vis_range, float vis_blur, int vis_size)
 
void EEVEE_lightprobes_grid_data_from_object (Object *ob, EEVEE_LightGrid *egrid, int *offset)
 
void EEVEE_lightprobes_cube_data_from_object (Object *ob, EEVEE_LightProbe *eprobe)
 
void EEVEE_lightprobes_planar_data_from_object (Object *ob, EEVEE_PlanarReflection *eplanar, EEVEE_LightProbeVisTest *vis_test)
 
int EEVEE_depth_of_field_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object *camera)
 
void EEVEE_depth_of_field_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_depth_of_field_draw (EEVEE_Data *vedata)
 
bool EEVEE_depth_of_field_jitter_get (EEVEE_EffectsInfo *effects, float r_jitter[2], float *r_focus_distance)
 
int EEVEE_depth_of_field_sample_count_get (EEVEE_EffectsInfo *effects, int sample_count, int *r_ring_count)
 
int EEVEE_bloom_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_bloom_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_bloom_draw (EEVEE_Data *vedata)
 
void EEVEE_bloom_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples)
 
void EEVEE_bloom_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_cryptomatte_renderpasses_init (EEVEE_Data *vedata)
 
void EEVEE_cryptomatte_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, int tot_samples)
 
void EEVEE_cryptomatte_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_cryptomatte_cache_populate (EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Object *ob)
 
void EEVEE_cryptomatte_particle_hair_cache_populate (EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Object *ob)
 
void EEVEE_cryptomatte_object_curves_cache_populate (EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, Object *ob)
 
void EEVEE_cryptomatte_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_cryptomatte_update_passes (struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer)
 
void EEVEE_cryptomatte_render_result (struct RenderLayer *rl, const char *viewname, const rcti *rect, EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata)
 
void EEVEE_cryptomatte_store_metadata (EEVEE_Data *vedata, struct RenderResult *render_result)
 
void EEVEE_cryptomatte_free (EEVEE_Data *vedata)
 
int EEVEE_occlusion_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_occlusion_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples)
 
void EEVEE_occlusion_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_occlusion_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_occlusion_compute (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_occlusion_draw_debug (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_occlusion_free (void)
 
int EEVEE_screen_raytrace_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_screen_raytrace_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_refraction_compute (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_reflection_compute (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_reflection_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples)
 
void EEVEE_reflection_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_subsurface_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_subsurface_draw_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_subsurface_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_subsurface_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_data_render (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_subsurface_compute (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_subsurface_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
int EEVEE_motion_blur_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_motion_blur_step_set (EEVEE_Data *vedata, int step)
 
void EEVEE_motion_blur_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_motion_blur_cache_populate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object *ob)
 
void EEVEE_motion_blur_hair_cache_populate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object *ob, struct ParticleSystem *psys, struct ModifierData *md)
 
void EEVEE_motion_blur_curves_cache_populate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object *ob)
 
void EEVEE_motion_blur_swap_data (EEVEE_Data *vedata)
 
void EEVEE_motion_blur_cache_finish (EEVEE_Data *vedata)
 
void EEVEE_motion_blur_draw (EEVEE_Data *vedata)
 
void EEVEE_mist_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_mist_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_renderpasses_init (EEVEE_Data *vedata)
 
void EEVEE_renderpasses_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples)
 
void EEVEE_renderpasses_cache_finish (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_renderpasses_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, bool post_effect)
 
void EEVEE_renderpasses_postprocess (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, eViewLayerEEVEEPassType renderpass_type, int aov_index)
 
void EEVEE_renderpasses_draw (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_renderpasses_draw_debug (EEVEE_Data *vedata)
 
bool EEVEE_renderpasses_only_first_sample_pass_active (EEVEE_Data *vedata)
 
uint EEVEE_renderpasses_aov_hash (const ViewLayerAOV *aov)
 
void EEVEE_temporal_sampling_reset (EEVEE_Data *vedata)
 
void EEVEE_temporal_sampling_create_view (EEVEE_Data *vedata)
 
int EEVEE_temporal_sampling_sample_count_get (const Scene *scene, const EEVEE_StorageList *stl)
 
int EEVEE_temporal_sampling_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_temporal_sampling_offset_calc (const double ht_point[2], float filter_size, float r_offset[2])
 
void EEVEE_temporal_sampling_matrices_calc (EEVEE_EffectsInfo *effects, const double ht_point[2])
 
void EEVEE_temporal_sampling_update_matrices (EEVEE_Data *vedata)
 
void EEVEE_temporal_sampling_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_temporal_sampling_draw (EEVEE_Data *vedata)
 
void EEVEE_volumes_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_set_jitter (EEVEE_ViewLayerData *sldata, uint current_sample)
 
void EEVEE_volumes_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_cache_object_add (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, struct Scene *scene, Object *ob)
 
void EEVEE_volumes_cache_finish (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_draw_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_compute (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_resolve (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples)
 
void EEVEE_volumes_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_free (void)
 
void EEVEE_effects_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object *camera, bool minimal)
 
void EEVEE_effects_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_effects_draw_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_effects_downsample_radiance_buffer (EEVEE_Data *vedata, struct GPUTexture *texture_src)
 
void EEVEE_create_minmax_buffer (EEVEE_Data *vedata, struct GPUTexture *depth_src, int layer)
 
void EEVEE_downsample_cube_buffer (EEVEE_Data *vedata, struct GPUTexture *texture_src, int level)
 
void EEVEE_draw_effects (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
bool EEVEE_render_init (EEVEE_Data *vedata, struct RenderEngine *engine, struct Depsgraph *depsgraph)
 
void EEVEE_render_view_sync (EEVEE_Data *vedata, struct RenderEngine *engine, struct Depsgraph *depsgraph)
 
void EEVEE_render_modules_init (EEVEE_Data *vedata, struct RenderEngine *engine, struct Depsgraph *depsgraph)
 
void EEVEE_render_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_render_cache (void *vedata, struct Object *ob, struct RenderEngine *engine, struct Depsgraph *depsgraph)
 
void EEVEE_render_draw (EEVEE_Data *vedata, struct RenderEngine *engine, struct RenderLayer *rl, const struct rcti *rect)
 
void EEVEE_render_read_result (EEVEE_Data *vedata, struct RenderEngine *engine, struct RenderLayer *rl, const rcti *rect)
 
void EEVEE_render_update_passes (struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer)
 
void EEVEE_lookdev_init (EEVEE_Data *vedata)
 
void EEVEE_lookdev_cache_init (EEVEE_Data *vedata, EEVEE_ViewLayerData *sldata, DRWPass *pass, EEVEE_LightProbesInfo *pinfo, DRWShadingGroup **r_shgrp)
 
void EEVEE_lookdev_draw (EEVEE_Data *vedata)
 
void EEVEE_cache_populate (void *vedata, Object *ob)
 
floatEEVEE_lut_update_ggx_brdf (int lut_size)
 
floatEEVEE_lut_update_ggx_btdf (int lut_size, int lut_depth)
 

Variables

struct DrawEngineType draw_engine_eevee_type
 
 EEVEE_ShadowCasterBuffer
 
static const float texcomat [4][4]
 
static const float cubefacemat [6][4][4]
 

Macro Definition Documentation

◆ DOF_BOKEH_LUT_SIZE

#define DOF_BOKEH_LUT_SIZE   32

Definition at line 198 of file eevee_private.h.

◆ DOF_DILATE_RING_COUNT

#define DOF_DILATE_RING_COUNT   3

Definition at line 200 of file eevee_private.h.

◆ DOF_FAST_GATHER_COC_ERROR

#define DOF_FAST_GATHER_COC_ERROR   0.05

Definition at line 201 of file eevee_private.h.

◆ DOF_GATHER_RING_COUNT

#define DOF_GATHER_RING_COUNT   5

Definition at line 199 of file eevee_private.h.

◆ DOF_SHADER_DEFINES

#define DOF_SHADER_DEFINES
Value:
"#define DOF_TILE_DIVISOR " STRINGIFY(DOF_TILE_DIVISOR) "\n" \
"#define DOF_BOKEH_LUT_SIZE " STRINGIFY(DOF_BOKEH_LUT_SIZE) "\n" \
"#define DOF_GATHER_RING_COUNT " STRINGIFY(DOF_GATHER_RING_COUNT) "\n" \
"#define DOF_DILATE_RING_COUNT " STRINGIFY(DOF_DILATE_RING_COUNT) "\n" \
"#define DOF_FAST_GATHER_COC_ERROR " STRINGIFY(DOF_FAST_GATHER_COC_ERROR) "\n"
#define STRINGIFY(x)
#define DOF_TILE_DIVISOR
#define DOF_BOKEH_LUT_SIZE
#define DOF_DILATE_RING_COUNT
#define DOF_GATHER_RING_COUNT
#define DOF_FAST_GATHER_COC_ERROR

Definition at line 203 of file eevee_private.h.

◆ DOF_TILE_DIVISOR

#define DOF_TILE_DIVISOR   16

Definition at line 197 of file eevee_private.h.

◆ EEVEE_AOV_HASH_ALL

#define EEVEE_AOV_HASH_ALL   -1

Definition at line 155 of file eevee_private.h.

◆ EEVEE_AOV_HASH_COLOR_TYPE_MASK

#define EEVEE_AOV_HASH_COLOR_TYPE_MASK   1

Definition at line 156 of file eevee_private.h.

◆ EEVEE_PROBE_MAX

#define EEVEE_PROBE_MAX   min_ii(MAX_PROBE, GPU_max_texture_layers() / 6)

Definition at line 73 of file eevee_private.h.

◆ EEVEE_RAY_CAMERA

#define EEVEE_RAY_CAMERA   0

Definition at line 911 of file eevee_private.h.

◆ EEVEE_RAY_DIFFUSE

#define EEVEE_RAY_DIFFUSE   2

Definition at line 913 of file eevee_private.h.

◆ EEVEE_RAY_GLOSSY

#define EEVEE_RAY_GLOSSY   3

Definition at line 914 of file eevee_private.h.

◆ EEVEE_RAY_SHADOW

#define EEVEE_RAY_SHADOW   1

Definition at line 912 of file eevee_private.h.

◆ EEVEE_RENDERPASSES_MATERIAL

#define EEVEE_RENDERPASSES_MATERIAL
Value:
EEVEE_RENDER_PASS_SPECULAR_COLOR | EEVEE_RENDER_PASS_SPECULAR_LIGHT | \
EEVEE_RENDER_PASS_ENVIRONMENT | EEVEE_RENDER_PASS_AOV)
@ EEVEE_RENDER_PASS_DIFFUSE_LIGHT
@ EEVEE_RENDER_PASS_AOV
@ EEVEE_RENDER_PASS_DIFFUSE_COLOR
@ EEVEE_RENDER_PASS_SPECULAR_LIGHT
@ EEVEE_RENDER_PASS_EMIT

Definition at line 151 of file eevee_private.h.

◆ EEVEE_VELOCITY_TILE_SIZE

#define EEVEE_VELOCITY_TILE_SIZE   32

Definition at line 74 of file eevee_private.h.

◆ IRRADIANCE_HL2

#define IRRADIANCE_HL2

Definition at line 50 of file eevee_private.h.

◆ LAMPTYPE_AREA_ELLIPSE

#define LAMPTYPE_AREA_ELLIPSE   100.0f

Definition at line 481 of file eevee_private.h.

◆ LOOK_DEV_STUDIO_LIGHT_ENABLED

#define LOOK_DEV_STUDIO_LIGHT_ENABLED (   v3d)
Value:
((v3d) && (((v3d->shading.type == OB_MATERIAL) && \
((v3d->shading.flag & V3D_SHADING_SCENE_WORLD) == 0)) || \
((v3d->shading.type == OB_RENDER) && \
((v3d->shading.flag & V3D_SHADING_SCENE_WORLD_RENDER) == 0))))
@ OB_RENDER
@ OB_MATERIAL
@ V3D_SHADING_SCENE_WORLD_RENDER
@ V3D_SHADING_SCENE_WORLD

Definition at line 141 of file eevee_private.h.

◆ MAX_AOVS

#define MAX_AOVS   64

Definition at line 41 of file eevee_private.h.

◆ MAX_BLOOM_STEP

#define MAX_BLOOM_STEP   16

Definition at line 40 of file eevee_private.h.

◆ MAX_CASCADE_NUM

#define MAX_CASCADE_NUM   4

Definition at line 36 of file eevee_private.h.

◆ MAX_CRYPTOMATTE_LAYERS

#define MAX_CRYPTOMATTE_LAYERS   3

Definition at line 157 of file eevee_private.h.

◆ MAX_GRID

#define MAX_GRID   64 /* TODO: find size by dividing UBO max size by grid data size. */

Definition at line 33 of file eevee_private.h.

◆ MAX_LIGHT

#define MAX_LIGHT   128 /* TODO: find size by dividing UBO max size by light data size. */

Definition at line 35 of file eevee_private.h.

◆ MAX_PLANAR

#define MAX_PLANAR   16 /* TODO: find size by dividing UBO max size by grid data size. */

Definition at line 34 of file eevee_private.h.

◆ MAX_PROBE

#define MAX_PROBE   128 /* TODO: find size by dividing UBO max size by probe data size. */

Definition at line 32 of file eevee_private.h.

◆ MAX_SCREEN_BUFFERS_LOD_LEVEL

#define MAX_SCREEN_BUFFERS_LOD_LEVEL   6

Definition at line 148 of file eevee_private.h.

◆ MAX_SHADOW

#define MAX_SHADOW   128 /* TODO: Make this depends on #GL_MAX_ARRAY_TEXTURE_LAYERS. */

Definition at line 37 of file eevee_private.h.

◆ MAX_SHADOW_CASCADE

#define MAX_SHADOW_CASCADE   8

Definition at line 38 of file eevee_private.h.

◆ MAX_SHADOW_CUBE

#define MAX_SHADOW_CUBE   (MAX_SHADOW - MAX_CASCADE_NUM * MAX_SHADOW_CASCADE)

Definition at line 39 of file eevee_private.h.

◆ MB_CURR

#define MB_CURR   2

Definition at line 618 of file eevee_private.h.

◆ MB_NEXT

#define MB_NEXT   1

Definition at line 617 of file eevee_private.h.

◆ MB_PREV

#define MB_PREV   0

Definition at line 616 of file eevee_private.h.

◆ MIN_CUBE_LOD_LEVEL

#define MIN_CUBE_LOD_LEVEL   3

Definition at line 147 of file eevee_private.h.

◆ SHADER_DEFINES

#define SHADER_DEFINES
Value:
"#define EEVEE_ENGINE\n" \
"#define MAX_PROBE " STRINGIFY(MAX_PROBE) "\n" \
"#define MAX_GRID " STRINGIFY(MAX_GRID) "\n" \
"#define MAX_PLANAR " STRINGIFY(MAX_PLANAR) "\n" \
"#define MAX_LIGHT " STRINGIFY(MAX_LIGHT) "\n" \
"#define MAX_SHADOW " STRINGIFY(MAX_SHADOW) "\n" \
"#define MAX_SHADOW_CUBE " STRINGIFY(MAX_SHADOW_CUBE) "\n" \
"#define MAX_SHADOW_CASCADE " STRINGIFY(MAX_SHADOW_CASCADE) "\n" \
"#define MAX_CASCADE_NUM " STRINGIFY(MAX_CASCADE_NUM) "\n" \
SHADER_IRRADIANCE
#define MAX_SHADOW_CASCADE
Definition: eevee_private.h:38
#define MAX_SHADOW_CUBE
Definition: eevee_private.h:39
#define MAX_PLANAR
Definition: eevee_private.h:34
#define MAX_PROBE
Definition: eevee_private.h:32
#define MAX_GRID
Definition: eevee_private.h:33
#define MAX_LIGHT
Definition: eevee_private.h:35
#define MAX_CASCADE_NUM
Definition: eevee_private.h:36
#define MAX_SHADOW
Definition: eevee_private.h:37

Definition at line 60 of file eevee_private.h.

◆ SHADER_IRRADIANCE

#define SHADER_IRRADIANCE   "#define IRRADIANCE_HL2\n"

Definition at line 55 of file eevee_private.h.

◆ SWAP_BUFFERS

#define SWAP_BUFFERS ( )
Value:
{ \
if (effects->target_buffer == fbl->effect_color_fb) { \
SWAP_DOUBLE_BUFFERS(); \
effects->source_buffer = txl->color_post; \
effects->target_buffer = fbl->main_color_fb; \
} \
else { \
SWAP_DOUBLE_BUFFERS(); \
effects->source_buffer = txl->color; \
effects->target_buffer = fbl->effect_color_fb; \
} \
} \
((void)0)
SyclQueue void void size_t num_bytes void

Definition at line 88 of file eevee_private.h.

◆ SWAP_BUFFERS_TAA

#define SWAP_BUFFERS_TAA ( )
Value:
{ \
if (effects->target_buffer == fbl->effect_color_fb) { \
SWAP(struct GPUFrameBuffer *, fbl->effect_fb, fbl->taa_history_fb); \
SWAP(struct GPUFrameBuffer *, fbl->effect_color_fb, fbl->taa_history_color_fb); \
SWAP(GPUTexture *, txl->color_post, txl->taa_history); \
effects->source_buffer = txl->taa_history; \
effects->target_buffer = fbl->effect_color_fb; \
} \
else { \
SWAP(struct GPUFrameBuffer *, fbl->main_fb, fbl->taa_history_fb); \
SWAP(struct GPUFrameBuffer *, fbl->main_color_fb, fbl->taa_history_color_fb); \
SWAP(GPUTexture *, txl->color, txl->taa_history); \
effects->source_buffer = txl->taa_history; \
effects->target_buffer = fbl->main_color_fb; \
} \
} \
((void)0)
struct GPUFrameBuffer GPUFrameBuffer
struct GPUTexture GPUTexture
Definition: GPU_texture.h:17

Definition at line 103 of file eevee_private.h.

◆ SWAP_DOUBLE_BUFFERS

#define SWAP_DOUBLE_BUFFERS ( )
Value:
{ \
if (effects->swap_double_buffer) { \
SWAP(struct GPUFrameBuffer *, fbl->main_fb, fbl->double_buffer_fb); \
SWAP(struct GPUFrameBuffer *, fbl->main_color_fb, fbl->double_buffer_color_fb); \
SWAP(GPUTexture *, txl->color, txl->color_double_buffer); \
effects->swap_double_buffer = false; \
} \
} \
((void)0)

Definition at line 77 of file eevee_private.h.

◆ TAA_MAX_SAMPLE

#define TAA_MAX_SAMPLE   10000926

Definition at line 44 of file eevee_private.h.

◆ USE_SCENE_LIGHT

#define USE_SCENE_LIGHT (   v3d)
Value:
((!v3d) || \
((v3d->shading.type == OB_MATERIAL) && (v3d->shading.flag & V3D_SHADING_SCENE_LIGHTS)) || \
((v3d->shading.type == OB_RENDER) && (v3d->shading.flag & V3D_SHADING_SCENE_LIGHTS_RENDER)))
@ V3D_SHADING_SCENE_LIGHTS
@ V3D_SHADING_SCENE_LIGHTS_RENDER

Definition at line 137 of file eevee_private.h.

◆ USE_VOLUME_OPTI

#define USE_VOLUME_OPTI   (GPU_shader_image_load_store_support())

Definition at line 75 of file eevee_private.h.

Typedef Documentation

◆ eEEVEEMotionData

◆ EEVEE_BoundBox

◆ EEVEE_CommonUniformBuffer

◆ EEVEE_CryptomatteSample

◆ EEVEE_Data

typedef struct EEVEE_Data EEVEE_Data

◆ EEVEE_DofGatherPass

◆ EEVEE_EffectsFlag

◆ EEVEE_EffectsInfo

◆ EEVEE_FramebufferList

◆ EEVEE_GeometryMotionData

◆ EEVEE_HairMotionData

◆ EEVEE_HairMotionStepData

◆ EEVEE_Light

typedef struct EEVEE_Light EEVEE_Light

◆ EEVEE_LightEngineData

◆ EEVEE_LightGrid

Definition at line 216 of file eevee_private.h.

◆ EEVEE_LightProbe

Definition at line 215 of file eevee_private.h.

◆ EEVEE_LightProbeEngineData

◆ EEVEE_LightProbesInfo

◆ EEVEE_LightProbeVisTest

◆ EEVEE_LightsInfo

◆ EEVEE_MotionBlurData

◆ EEVEE_ObjectEngineData

◆ EEVEE_ObjectKey

◆ EEVEE_ObjectMotionData

◆ EEVEE_PassList

◆ EEVEE_PlanarReflection

◆ EEVEE_PrivateData

◆ EEVEE_RenderPassData

◆ EEVEE_Shadow

typedef struct EEVEE_Shadow EEVEE_Shadow

◆ EEVEE_ShadowCascade

◆ EEVEE_ShadowCascadeRender

◆ EEVEE_ShadowCube

◆ EEVEE_StorageList

◆ EEVEE_TextureList

◆ EEVEE_ViewLayerData

◆ EEVEE_WorldEngineData

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
VAR_MAT_MESH 
VAR_MAT_VOLUME 
VAR_MAT_HAIR 
VAR_MAT_POINTCLOUD 
VAR_MAT_BLEND 
VAR_MAT_LOOKDEV 
VAR_MAT_HOLDOUT 
VAR_MAT_HASH 
VAR_MAT_DEPTH 
VAR_MAT_REFRACT 
VAR_WORLD_BACKGROUND 
VAR_WORLD_PROBE 
VAR_WORLD_VOLUME 
VAR_DEFAULT 

Definition at line 160 of file eevee_private.h.

◆ anonymous enum

anonymous enum
Enumerator
KEY_CULL 
KEY_REFRACT 
KEY_HAIR 
KEY_SHADOW 

Definition at line 178 of file eevee_private.h.

◆ anonymous enum

anonymous enum
Enumerator
PROBE_UPDATE_CUBE 
PROBE_UPDATE_GRID 
PROBE_UPDATE_ALL 

Definition at line 608 of file eevee_private.h.

◆ eEEVEEMotionData

Enumerator
EEVEE_MOTION_DATA_MESH 
EEVEE_MOTION_DATA_HAIR 

Definition at line 657 of file eevee_private.h.

◆ EEVEE_DofGatherPass

Enumerator
DOF_GATHER_FOREGROUND 
DOF_GATHER_BACKGROUND 
DOF_GATHER_HOLEFILL 
DOF_GATHER_MAX_PASS 

Definition at line 189 of file eevee_private.h.

◆ EEVEE_EffectsFlag

Enumerator
EFFECT_MOTION_BLUR 
EFFECT_BLOOM 
EFFECT_DOF 
EFFECT_VOLUMETRIC 
EFFECT_SSR 
EFFECT_DOUBLE_BUFFER 
EFFECT_REFRACT 
EFFECT_GTAO 
EFFECT_TAA 
EFFECT_POST_BUFFER 
EFFECT_NORMAL_BUFFER 
EFFECT_RADIANCE_BUFFER 
EFFECT_SSS 
EFFECT_VELOCITY_BUFFER 
EFFECT_TAA_REPROJECT 
EFFECT_DEPTH_DOUBLE_BUFFER 

Definition at line 699 of file eevee_private.h.

Function Documentation

◆ BLI_STATIC_ASSERT()

BLI_STATIC_ASSERT ( )

Definition at line 519 of file eevee_private.h.

References count, and update().

◆ EEVEE_bloom_cache_init()

void EEVEE_bloom_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_bloom_draw()

void EEVEE_bloom_draw ( EEVEE_Data vedata)

◆ EEVEE_bloom_init()

int EEVEE_bloom_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_bloom_output_accumulate()

void EEVEE_bloom_output_accumulate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_bloom_output_init()

void EEVEE_bloom_output_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
uint  tot_samples 
)

◆ EEVEE_cache_populate()

void EEVEE_cache_populate ( void vedata,
Object ob 
)

◆ eevee_contact_shadow_setup()

void eevee_contact_shadow_setup ( const Light la,
EEVEE_Shadow evsh 
)

◆ EEVEE_create_minmax_buffer()

void EEVEE_create_minmax_buffer ( EEVEE_Data vedata,
struct GPUTexture depth_src,
int  layer 
)

◆ EEVEE_cryptomatte_cache_init()

void EEVEE_cryptomatte_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_cryptomatte_cache_populate()

void EEVEE_cryptomatte_cache_populate ( EEVEE_Data vedata,
EEVEE_ViewLayerData sldata,
Object ob 
)

◆ EEVEE_cryptomatte_free()

void EEVEE_cryptomatte_free ( EEVEE_Data vedata)

◆ EEVEE_cryptomatte_object_curves_cache_populate()

void EEVEE_cryptomatte_object_curves_cache_populate ( EEVEE_Data vedata,
EEVEE_ViewLayerData sldata,
Object ob 
)

◆ EEVEE_cryptomatte_output_accumulate()

void EEVEE_cryptomatte_output_accumulate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_cryptomatte_output_init()

void EEVEE_cryptomatte_output_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
int  tot_samples 
)

◆ EEVEE_cryptomatte_particle_hair_cache_populate()

void EEVEE_cryptomatte_particle_hair_cache_populate ( EEVEE_Data vedata,
EEVEE_ViewLayerData sldata,
Object ob 
)

◆ EEVEE_cryptomatte_render_result()

void EEVEE_cryptomatte_render_result ( struct RenderLayer rl,
const char *  viewname,
const rcti rect,
EEVEE_Data vedata,
EEVEE_ViewLayerData sldata 
)

◆ EEVEE_cryptomatte_renderpasses_init()

void EEVEE_cryptomatte_renderpasses_init ( EEVEE_Data vedata)

◆ EEVEE_cryptomatte_store_metadata()

void EEVEE_cryptomatte_store_metadata ( EEVEE_Data vedata,
struct RenderResult render_result 
)

◆ EEVEE_cryptomatte_update_passes()

void EEVEE_cryptomatte_update_passes ( struct RenderEngine engine,
struct Scene scene,
struct ViewLayer view_layer 
)

Register the render passes needed for cryptomatte normally this is done in EEVEE_render_update_passes, but it has been placed here to keep related code side-by-side for clarity.

Definition at line 423 of file eevee_cryptomatte.c.

References BLI_snprintf_rlen(), ViewLayer::cryptomatte_flag, eevee_cryptomatte_passes_per_layer(), MAX_NAME, RE_engine_register_pass(), scene, SOCK_RGBA, VIEW_LAYER_CRYPTOMATTE_ASSET, VIEW_LAYER_CRYPTOMATTE_MATERIAL, and VIEW_LAYER_CRYPTOMATTE_OBJECT.

Referenced by EEVEE_render_update_passes().

◆ EEVEE_depth_of_field_cache_init()

void EEVEE_depth_of_field_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_depth_of_field_draw()

void EEVEE_depth_of_field_draw ( EEVEE_Data vedata)

Definition at line 950 of file eevee_depth_of_field.c.

References EEVEE_PassList::dof_bokeh, EEVEE_FramebufferList::dof_bokeh_fb, EEVEE_EffectsInfo::dof_bokeh_gather_lut_tx, dof_dilate_tiles_pass_draw(), EEVEE_PassList::dof_downsample, EEVEE_FramebufferList::dof_downsample_fb, EEVEE_PassList::dof_filter, EEVEE_FramebufferList::dof_filter_bg_fb, EEVEE_FramebufferList::dof_filter_fg_fb, EEVEE_PassList::dof_flatten_tiles, EEVEE_FramebufferList::dof_flatten_tiles_fb, EEVEE_PassList::dof_gather_bg, EEVEE_FramebufferList::dof_gather_bg_fb, EEVEE_PassList::dof_gather_fg, EEVEE_FramebufferList::dof_gather_fg_fb, EEVEE_PassList::dof_gather_fg_holefill, EEVEE_FramebufferList::dof_gather_fg_holefill_fb, EEVEE_EffectsInfo::dof_half_res_coc_tx, EEVEE_EffectsInfo::dof_half_res_color_tx, dof_recursive_reduce(), EEVEE_PassList::dof_reduce_copy, EEVEE_FramebufferList::dof_reduce_copy_fb, EEVEE_FramebufferList::dof_reduce_fb, EEVEE_EffectsInfo::dof_reduce_input_coc_tx, EEVEE_EffectsInfo::dof_reduce_input_color_tx, EEVEE_EffectsInfo::dof_reduce_steps, EEVEE_PassList::dof_resolve, EEVEE_PassList::dof_scatter_bg, EEVEE_FramebufferList::dof_scatter_bg_fb, EEVEE_PassList::dof_scatter_fg, EEVEE_FramebufferList::dof_scatter_fg_fb, EEVEE_PassList::dof_setup, EEVEE_FramebufferList::dof_setup_fb, DRW_draw_pass(), DRW_stats_group_end(), DRW_stats_group_start(), EFFECT_DOF, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, GPU_framebuffer_bind(), GPU_framebuffer_recursive_downsample(), NULL, EEVEE_Data::psl, EEVEE_Data::stl, SWAP_BUFFERS, EEVEE_EffectsInfo::target_buffer, and EEVEE_Data::txl.

Referenced by EEVEE_draw_effects().

◆ EEVEE_depth_of_field_init()

int EEVEE_depth_of_field_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
Object camera 
)

◆ EEVEE_depth_of_field_jitter_get()

bool EEVEE_depth_of_field_jitter_get ( EEVEE_EffectsInfo effects,
float  r_jitter[2],
float r_focus_distance 
)

◆ EEVEE_depth_of_field_sample_count_get()

int EEVEE_depth_of_field_sample_count_get ( EEVEE_EffectsInfo effects,
int  sample_count,
int *  r_ring_count 
)

◆ EEVEE_downsample_cube_buffer()

void EEVEE_downsample_cube_buffer ( EEVEE_Data vedata,
struct GPUTexture texture_src,
int  level 
)

◆ EEVEE_draw_effects()

void EEVEE_draw_effects ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_effects_cache_init()

void EEVEE_effects_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Definition at line 222 of file eevee_effects.c.

References EEVEE_MotionBlurData::camera, EEVEE_PassList::color_copy_ps, EEVEE_PassList::color_downsample_cube_ps, EEVEE_PassList::color_downsample_ps, EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_data, EEVEE_ViewLayerData::common_ubo, DRW_cache_fullscreen_quad_get(), DRW_PASS_CREATE, DRW_shgroup_call, DRW_shgroup_call_instances(), DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_float(), DRW_shgroup_uniform_int(), DRW_shgroup_uniform_int_copy(), DRW_shgroup_uniform_mat4(), DRW_shgroup_uniform_texture_ex(), DRW_shgroup_uniform_texture_ref(), DRW_shgroup_uniform_texture_ref_ex(), DRW_shgroup_uniform_vec2(), DRW_STATE_DEPTH_ALWAYS, DRW_STATE_WRITE_COLOR, DRW_STATE_WRITE_DEPTH, e_data, EEVEE_shaders_effect_color_copy_sh_get(), EEVEE_shaders_effect_downsample_cube_sh_get(), EEVEE_shaders_effect_downsample_sh_get(), EEVEE_shaders_effect_maxz_copydepth_layer_sh_get(), EEVEE_shaders_effect_maxz_copydepth_sh_get(), EEVEE_shaders_effect_maxz_downlevel_sh_get(), EEVEE_shaders_velocity_resolve_sh_get(), EFFECT_RADIANCE_BUFFER, EFFECT_VELOCITY_BUFFER, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_TextureList::filtered_radiance, GPU_BACKEND_OPENGL, GPU_DEVICE_INTEL, GPU_DRIVER_ANY, GPU_OS_ANY, GPU_SAMPLER_DEFAULT, GPU_SAMPLER_FILTER, GPU_type_matches_ex(), GPUBatch, EEVEE_PassList::maxz_copydepth_layer_ps, EEVEE_PassList::maxz_copydepth_ps, EEVEE_PassList::maxz_downlevel_ps, EEVEE_TextureList::maxzbuffer, MB_CURR, MB_NEXT, MB_PREV, EEVEE_EffectsInfo::motion_blur, NULL, EEVEE_MotionBlurData::persinv, EEVEE_MotionBlurData::persmat, EEVEE_Data::psl, quad, EEVEE_ViewLayerData::renderpass_ubo, EEVEE_CommonUniformBuffer::ssr_firefly_fac, EEVEE_Data::stl, EEVEE_Data::txl, and EEVEE_PassList::velocity_resolve.

Referenced by eevee_cache_init(), eevee_lightbake_cache_create(), and EEVEE_render_cache_init().

◆ EEVEE_effects_downsample_radiance_buffer()

void EEVEE_effects_downsample_radiance_buffer ( EEVEE_Data vedata,
struct GPUTexture texture_src 
)

◆ EEVEE_effects_draw_init()

void EEVEE_effects_draw_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_effects_init()

void EEVEE_effects_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
Object camera,
bool  minimal 
)

MinMax Pyramid

Compute hiZ texel alignment.

Color buffer with correct down-sampling alignment. Used for SSReflections & SSRefractions.

Normal buffer for deferred passes.

Motion vector buffer for correct TAA / motion blur.

Setup depth double buffer.

Definition at line 56 of file eevee_effects.c.

References camera, CLEANUP_BUFFER, EEVEE_ViewLayerData::common_data, EEVEE_TextureList::depth_double_buffer, divide_ceil_u(), EEVEE_FramebufferList::double_buffer_depth_fb, EEVEE_FramebufferList::downsample_fb, draw_engine_eevee_type, DRW_TEX_FILTER, DRW_TEX_MIPMAP, DRW_texture_ensure_2d(), DRW_texture_ensure_fullscreen_2d(), DRW_TEXTURE_FREE_SAFE, DRW_texture_pool_query_2d(), DRW_viewport_size_get(), DRW_viewport_texture_list_get(), EEVEE_bloom_init(), EEVEE_depth_of_field_init(), EEVEE_lookdev_init(), EEVEE_motion_blur_init(), EEVEE_occlusion_init(), EEVEE_RENDER_PASS_NORMAL, EEVEE_screen_raytrace_init(), EEVEE_subsurface_init(), EEVEE_temporal_sampling_init(), EEVEE_temporal_sampling_update_matrices(), EEVEE_volumes_init(), EFFECT_DEPTH_DOUBLE_BUFFER, EFFECT_NORMAL_BUFFER, EFFECT_RADIANCE_BUFFER, EFFECT_TAA, EFFECT_TAA_REPROJECT, EFFECT_VELOCITY_BUFFER, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, EEVEE_TextureList::filtered_radiance, G, EEVEE_StorageList::g_data, GPU_BACKEND_OPENGL, GPU_DEPTH24_STENCIL8, GPU_DEPTH_COMPONENT24, GPU_DEVICE_INTEL, GPU_DRIVER_ANY, GPU_framebuffer_create(), GPU_framebuffer_texture_attach(), GPU_OS_ANY, GPU_R11F_G11F_B10F, GPU_R32F, GPU_RG16, GPU_RGBA16, GPU_type_matches_ex(), EEVEE_EffectsInfo::hiz_size, EEVEE_CommonUniformBuffer::hiz_uv_scale, EEVEE_FramebufferList::main_fb, MAX_SCREEN_BUFFERS_LOD_LEVEL, EEVEE_TextureList::maxzbuffer, EEVEE_FramebufferList::maxzbuffer_fb, MEM_callocN, NULL, EEVEE_FramebufferList::radiance_filtered_fb, EEVEE_PrivateData::render_passes, SETUP_BUFFER, EEVEE_EffectsInfo::ssr_normal_input, EEVEE_CommonUniformBuffer::ssr_pixelsize, EEVEE_Data::stl, EEVEE_TextureList::taa_history, EEVEE_FramebufferList::taa_history_color_fb, EEVEE_FramebufferList::taa_history_fb, EEVEE_EffectsInfo::taa_render_sample, EEVEE_Data::txl, UNPACK2, EEVEE_FramebufferList::velocity_fb, EEVEE_FramebufferList::velocity_resolve_fb, and EEVEE_EffectsInfo::velocity_tx.

Referenced by eevee_engine_init(), eevee_lightbake_cache_create(), and EEVEE_render_modules_init().

◆ eevee_hdri_preview_overlay_enabled()

BLI_INLINE bool eevee_hdri_preview_overlay_enabled ( const View3D v3d)

◆ eevee_id_update()

void eevee_id_update ( void vedata,
ID id 
)

Definition at line 414 of file eevee_engine.c.

References eevee_id_object_update(), eevee_id_world_update(), GS, id, ID_OB, ID_WO, and ID::name.

Referenced by EEVEE_render_cache().

◆ EEVEE_light_data_ensure()

EEVEE_LightEngineData* EEVEE_light_data_ensure ( Object ob)

◆ EEVEE_light_data_get()

EEVEE_LightEngineData* EEVEE_light_data_get ( Object ob)

◆ eevee_light_matrix_get()

void eevee_light_matrix_get ( const EEVEE_Light evli,
float  r_mat[4][4] 
)

Reconstruct local obmat from EEVEE_light. (normalized).

Definition at line 16 of file eevee_lights.c.

References copy_v3_v3(), EEVEE_Light::forwardvec, negate_v3_v3(), EEVEE_Light::position, EEVEE_Light::rightvec, and EEVEE_Light::upvec.

Referenced by EEVEE_shadows_cube_setup().

◆ EEVEE_lightbake_cache_init()

void EEVEE_lightbake_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
GPUTexture rt_color,
GPUTexture rt_depth 
)

Only initialize the passes useful for rendering the light cache.

Definition at line 190 of file eevee_lightprobes.c.

References EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_ubo, DRW_cache_fullscreen_quad_get(), DRW_PASS_CREATE, DRW_shgroup_call, DRW_shgroup_call_instances(), DRW_shgroup_create(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_float(), DRW_shgroup_uniform_int(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), DRW_STATE_WRITE_COLOR, EEVEE_shaders_probe_filter_diffuse_sh_get(), EEVEE_shaders_probe_filter_glossy_sh_get(), EEVEE_shaders_probe_filter_visibility_sh_get(), EEVEE_shaders_probe_grid_fill_sh_get(), EEVEE_LightProbesInfo::far_clip, EEVEE_LightProbesInfo::firefly_fac, EEVEE_StorageList::g_data, GPUBatch, LightCache::grid_tx, EEVEE_LightProbesInfo::intensity_fac, EEVEE_LightProbesInfo::layer, EEVEE_PrivateData::light_cache, EEVEE_LightProbesInfo::lod_rt_max, EEVEE_LightProbesInfo::lodfactor, EEVEE_LightProbesInfo::near_clip, NULL, EEVEE_LightProbesInfo::padding_size, EEVEE_PassList::probe_diffuse_compute, EEVEE_PassList::probe_glossy_compute, EEVEE_PassList::probe_grid_fill, EEVEE_PassList::probe_visibility_compute, EEVEE_ViewLayerData::probes, EEVEE_Data::psl, EEVEE_ViewLayerData::renderpass_ubo, EEVEE_LightProbesInfo::roughness, EEVEE_LightProbesInfo::samples_len, EEVEE_LightProbesInfo::shres, EEVEE_Data::stl, LightCacheTexture::tex, EEVEE_LightProbesInfo::texel_size, EEVEE_LightProbesInfo::visibility_blur, and EEVEE_LightProbesInfo::visibility_range.

Referenced by eevee_lightbake_cache_create(), and EEVEE_lightbake_update_world_quick().

◆ EEVEE_lightbake_filter_diffuse()

void EEVEE_lightbake_filter_diffuse ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
struct GPUTexture rt_color,
struct GPUFrameBuffer fb,
int  grid_offset,
float  intensity 
)

◆ EEVEE_lightbake_filter_glossy()

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 
)

◆ EEVEE_lightbake_filter_visibility()

void EEVEE_lightbake_filter_visibility ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
struct GPUTexture rt_depth,
struct GPUFrameBuffer fb,
int  grid_offset,
float  clipsta,
float  clipend,
float  vis_range,
float  vis_blur,
int  vis_size 
)

Filter rt_depth to light_cache->grid_tx.tex at index grid_offset.

◆ EEVEE_lightbake_render_scene()

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 
)

◆ EEVEE_lightbake_render_world()

void EEVEE_lightbake_render_world ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
struct GPUFrameBuffer face_fb[6] 
)

◆ EEVEE_lightprobe_data_ensure()

EEVEE_LightProbeEngineData* EEVEE_lightprobe_data_ensure ( Object ob)

◆ EEVEE_lightprobe_data_get()

EEVEE_LightProbeEngineData* EEVEE_lightprobe_data_get ( Object ob)

◆ EEVEE_lightprobes_cache_add()

void EEVEE_lightprobes_cache_add ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
Object ob 
)

◆ EEVEE_lightprobes_cache_finish()

void EEVEE_lightprobes_cache_finish ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Definition at line 674 of file eevee_lightprobes.c.

References BLI_assert, EEVEE_LightProbesInfo::cache_num_planar, EEVEE_ViewLayerData::common_data, LightCache::cube_len, DEG_get_evaluated_scene(), DEG_get_input_scene(), DRWContextState::depsgraph, EEVEE_LightProbesInfo::do_cube_update, EEVEE_LightProbesInfo::do_grid_update, DRW_context_state_get(), DRW_PASS_CREATE, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_uniform_float(), DRW_shgroup_uniform_texture_ref(), DRW_state_is_image_render(), DRW_state_is_opengl_render(), DRW_STATE_WRITE_COLOR, DRW_TEXTURE_FREE_SAFE, Scene::eevee, eevee_lightprobes_extract_from_cache(), EEVEE_shaders_probe_planar_downsample_sh_get(), DRWContextState::evil_C, LightCache::flag, SceneEEVEE::flag, float(), EEVEE_StorageList::g_data, SceneEEVEE::gi_irradiance_smoothing, GPU_uniformbuf_update(), EEVEE_LightProbesInfo::grid_data, LightCache::grid_len, EEVEE_ViewLayerData::grid_ubo, EEVEE_PrivateData::light_cache, SceneEEVEE::light_cache_data, LIGHTCACHE_UPDATE_AUTO, LIGHTCACHE_UPDATE_CUBE, LIGHTCACHE_UPDATE_GRID, max_ii(), LightCache::mips_len, NC_LIGHTPROBE, NULL, EEVEE_LightProbesInfo::num_planar, EEVEE_TextureList::planar_depth, EEVEE_TextureList::planar_pool, planar_pool_ensure_alloc(), EEVEE_CommonUniformBuffer::prb_irradiance_smooth, EEVEE_CommonUniformBuffer::prb_irradiance_vis_size, EEVEE_CommonUniformBuffer::prb_lod_cube_max, EEVEE_CommonUniformBuffer::prb_num_planar, EEVEE_CommonUniformBuffer::prb_num_render_cube, EEVEE_CommonUniformBuffer::prb_num_render_grid, EEVEE_LightProbesInfo::probe_data, EEVEE_PassList::probe_planar_downsample_ps, EEVEE_ViewLayerData::probe_ubo, EEVEE_ViewLayerData::probes, EEVEE_Data::psl, SCE_EEVEE_GI_AUTOBAKE, DRWContextState::scene, square_f(), EEVEE_CommonUniformBuffer::ssr_firefly_fac, EEVEE_Data::stl, EEVEE_Data::txl, LightCache::vis_res, and WM_event_add_notifier().

Referenced by eevee_cache_finish(), eevee_lightbake_cache_create(), and eevee_render_to_image().

◆ EEVEE_lightprobes_cache_init()

void EEVEE_lightprobes_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Definition at line 275 of file eevee_lightprobes.c.

References EEVEE_LightProbeVisTest::collection, EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_ubo, LightGridCache::corner, LightCache::cube_len, LightCache::cube_tx, DEG_get_evaluated_scene(), DRWContextState::depsgraph, EEVEE_LightProbesInfo::do_cube_update, EEVEE_LightProbesInfo::do_grid_update, DRW_cache_fullscreen_quad_get(), DRW_cache_quad_get(), DRW_context_state_get(), DRW_PASS_CREATE, DRW_shgroup_call, DRW_shgroup_call_buffer_instance(), DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_instance_format, DRW_shgroup_material_create(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_block_ref, DRW_shgroup_uniform_float_copy(), DRW_shgroup_uniform_int(), DRW_shgroup_uniform_ivec3(), DRW_shgroup_uniform_texture_ref(), DRW_shgroup_uniform_vec3(), DRW_STATE_CULL_BACK, DRW_STATE_DEPTH_EQUAL, DRW_STATE_DEPTH_LESS_EQUAL, DRW_state_draw_support(), DRW_STATE_WRITE_COLOR, DRW_STATE_WRITE_DEPTH, DRW_viewport_screenvecs_get(), e_data, Scene::eevee, EEVEE_lookdev_cache_init(), EEVEE_material_get(), EEVEE_shaders_probe_cube_display_sh_get(), EEVEE_shaders_probe_grid_display_sh_get(), EEVEE_shaders_probe_planar_display_sh_get(), EEVEE_world_default_get(), SceneEEVEE::flag, EEVEE_StorageList::g_data, SceneEEVEE::gi_cubemap_draw_size, SceneEEVEE::gi_irradiance_draw_size, LightCache::grid_data, LightCache::grid_len, LightCache::grid_tx, EEVEE_ViewLayerData::grid_ubo, LightGridCache::increment_x, LightGridCache::increment_y, LightGridCache::increment_z, EEVEE_PrivateData::light_cache, EEVEE_ViewLayerData::light_ubo, LOOK_DEV_STUDIO_LIGHT_ENABLED, NULL, EEVEE_LightProbesInfo::num_planar, LightGridCache::offset, options, EEVEE_PrivateData::planar_display_shgrp, EEVEE_TextureList::planar_pool, EEVEE_ViewLayerData::planar_ubo, EEVEE_PassList::probe_background, EEVEE_PassList::probe_display, EEVEE_ViewLayerData::probe_ubo, EEVEE_ViewLayerData::probes, EEVEE_Data::psl, EEVEE_ViewLayerData::renderpass_ubo, EEVEE_PrivateData::renderpass_ubo, LightGridCache::resolution, SCE_EEVEE_SHOW_CUBEMAPS, SCE_EEVEE_SHOW_IRRADIANCE, scene, DRWContextState::scene, EEVEE_ViewLayerData::shadow_ubo, state, EEVEE_Data::stl, LightCacheTexture::tex, EEVEE_Data::txl, DRWContextState::v3d, VAR_WORLD_BACKGROUND, VAR_WORLD_PROBE, EEVEE_LightProbesInfo::vis_data, world, and Scene::world.

Referenced by eevee_cache_init(), eevee_lightbake_cache_create(), and EEVEE_render_cache_init().

◆ EEVEE_lightprobes_cube_data_from_object()

void EEVEE_lightprobes_cube_data_from_object ( Object ob,
EEVEE_LightProbe eprobe 
)

◆ EEVEE_lightprobes_free()

void EEVEE_lightprobes_free ( void  )

Definition at line 1249 of file eevee_lightprobes.c.

References DRW_TEXTURE_FREE_SAFE, e_data, and MEM_SAFE_FREE.

Referenced by eevee_engine_free().

◆ EEVEE_lightprobes_grid_data_from_object()

void EEVEE_lightprobes_grid_data_from_object ( Object ob,
EEVEE_LightGrid egrid,
int *  offset 
)

◆ EEVEE_lightprobes_init()

void EEVEE_lightprobes_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_lightprobes_obj_visibility_cb()

bool EEVEE_lightprobes_obj_visibility_cb ( bool  vis_in,
void user_data 
)

◆ EEVEE_lightprobes_planar_data_from_object()

void EEVEE_lightprobes_planar_data_from_object ( Object ob,
EEVEE_PlanarReflection eplanar,
EEVEE_LightProbeVisTest vis_test 
)

◆ EEVEE_lightprobes_refresh()

void EEVEE_lightprobes_refresh ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_lightprobes_refresh_planar()

void EEVEE_lightprobes_refresh_planar ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_lights_cache_add()

void EEVEE_lights_cache_add ( EEVEE_ViewLayerData sldata,
struct Object ob 
)

◆ EEVEE_lights_cache_finish()

void EEVEE_lights_cache_finish ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_lights_cache_init()

void EEVEE_lights_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_lookdev_cache_init()

void EEVEE_lookdev_cache_init ( EEVEE_Data vedata,
EEVEE_ViewLayerData sldata,
DRWPass pass,
EEVEE_LightProbesInfo pinfo,
DRWShadingGroup **  r_shgrp 
)

Definition at line 139 of file eevee_lookdev.c.

References axis_angle_to_mat3_single(), BKE_studiolight_ensure_flag(), BKE_studiolight_find(), copy_m3_m3(), copy_m3_m4(), LightCache::cube_data, LightCache::cube_mips, LightCache::cube_tx, DEG_get_evaluated_scene(), DRWContextState::depsgraph, DRW_context_state_get(), DRW_shgroup_create(), DRW_shgroup_uniform_float_copy(), DRW_shgroup_uniform_mat3(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ex(), DRW_view_viewmat_get(), Scene::eevee, eevee_hdri_preview_overlay_enabled(), EEVEE_lightcache_create(), eevee_lookdev_hdri_preview_init(), eevee_lookdev_lightcache_delete(), EEVEE_shaders_studiolight_background_sh_get(), EEVEE_shaders_studiolight_probe_sh_get(), EEVEE_StorageList::effects, equals_m3m3(), StudioLight::equirect_radiance_gputexture, StudioLight::flag, LightCache::flag, View3DShading::flag, EEVEE_StorageList::g_data, g_data, SceneEEVEE::gi_cubemap_resolution, SceneEEVEE::gi_filter_quality, SceneEEVEE::gi_glossy_clamp, GPU_SAMPLER_FILTER, GPU_SAMPLER_REPEAT_S, LightCache::grid_data, LightCache::grid_tx, StudioLight::index, LIGHTCACHE_UPDATE_WORLD, LOOK_DEV_STUDIO_LIGHT_ENABLED, EEVEE_StorageList::lookdev_cube_data, EEVEE_StorageList::lookdev_cube_mips, EEVEE_TextureList::lookdev_cube_tx, EEVEE_StorageList::lookdev_grid_data, EEVEE_TextureList::lookdev_grid_tx, View3DShading::lookdev_light, EEVEE_StorageList::lookdev_lightcache, EEVEE_EffectsInfo::lookdev_view, M_PI_2, MEM_SAFE_FREE, mul_m3_m3m3(), NULL, powf, scene, DRWContextState::scene, View3D::shading, state, EEVEE_Data::stl, View3DShading::studiolight_background, View3DShading::studiolight_blur, STUDIOLIGHT_EQUIRECT_RADIANCE_GPUTEXTURE, View3DShading::studiolight_intensity, STUDIOLIGHT_ORIENTATIONS_MATERIAL_MODE, View3DShading::studiolight_rot_z, STUDIOLIGHT_TYPE_WORLD, LightCacheTexture::tex, EEVEE_Data::txl, DRWContextState::v3d, and V3D_SHADING_STUDIOLIGHT_VIEW_ROTATION.

Referenced by EEVEE_lightprobes_cache_init(), and EEVEE_materials_cache_init().

◆ EEVEE_lookdev_draw()

void EEVEE_lookdev_draw ( EEVEE_Data vedata)

◆ EEVEE_lookdev_init()

void EEVEE_lookdev_init ( EEVEE_Data vedata)

◆ EEVEE_lut_update_ggx_brdf()

float* EEVEE_lut_update_ggx_brdf ( int  lut_size)

◆ EEVEE_lut_update_ggx_btdf()

float* EEVEE_lut_update_ggx_btdf ( int  lut_size,
int  lut_depth 
)

◆ EEVEE_material_bind_resources()

void EEVEE_material_bind_resources ( DRWShadingGroup shgrp,
struct 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 
)

◆ EEVEE_material_default_diffuse_get()

Material* EEVEE_material_default_diffuse_get ( void  )

◆ EEVEE_material_default_error_get()

Material* EEVEE_material_default_error_get ( void  )

◆ EEVEE_material_default_get()

struct GPUMaterial* EEVEE_material_default_get ( struct Scene scene,
Material ma,
int  options 
)

◆ EEVEE_material_default_glossy_get()

Material* EEVEE_material_default_glossy_get ( void  )

◆ EEVEE_material_get()

struct GPUMaterial* EEVEE_material_get ( EEVEE_Data vedata,
struct Scene scene,
Material ma,
World wo,
int  options 
)

◆ EEVEE_material_output_accumulate()

void EEVEE_material_output_accumulate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Definition at line 1064 of file eevee_materials.c.

References EEVEE_TextureList::aov_surface_accum, EEVEE_ViewLayerData::aovs, EEVEE_PassList::background_accum_ps, EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_data, EEVEE_ViewLayerData::common_ubo, EEVEE_ViewLayerData::diff_color, EEVEE_TextureList::diff_color_accum, EEVEE_ViewLayerData::diff_light, EEVEE_TextureList::diff_light_accum, DRW_TEXTURE_FREE_SAFE, EEVEE_reflection_output_accumulate(), EEVEE_RENDER_PASS_AOV, EEVEE_RENDER_PASS_DIFFUSE_COLOR, EEVEE_RENDER_PASS_DIFFUSE_LIGHT, EEVEE_RENDER_PASS_EMIT, EEVEE_RENDER_PASS_ENVIRONMENT, EEVEE_RENDER_PASS_SPECULAR_COLOR, EEVEE_RENDER_PASS_SPECULAR_LIGHT, EEVEE_subsurface_output_accumulate(), EFFECT_SSR, EFFECT_SSS, EEVEE_StorageList::effects, EEVEE_ViewLayerData::emit, EEVEE_TextureList::emit_accum, EEVEE_EffectsInfo::enabled_effects, EEVEE_TextureList::env_accum, EEVEE_ViewLayerData::environment, EEVEE_Data::fbl, EEVEE_StorageList::g_data, GPU_framebuffer_bind(), GPU_uniformbuf_update(), EEVEE_FramebufferList::main_fb, EEVEE_FramebufferList::material_accum_fb, EEVEE_PassList::material_accum_ps, material_renderpass_accumulate(), MAX_AOVS, NULL, EEVEE_PrivateData::num_aovs_used, EEVEE_Data::psl, EEVEE_PrivateData::render_passes, EEVEE_ViewLayerData::renderpass_ubo, EEVEE_PrivateData::renderpass_ubo, EEVEE_ViewLayerData::spec_color, EEVEE_TextureList::spec_color_accum, EEVEE_ViewLayerData::spec_light, EEVEE_TextureList::spec_light_accum, EEVEE_CommonUniformBuffer::ssr_toggle, EEVEE_Data::stl, and EEVEE_Data::txl.

Referenced by EEVEE_renderpasses_output_accumulate().

◆ EEVEE_material_output_init()

void EEVEE_material_output_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
uint  tot_samples 
)

◆ EEVEE_material_renderpasses_init()

void EEVEE_material_renderpasses_init ( EEVEE_Data vedata)

◆ EEVEE_materials_cache_finish()

void EEVEE_materials_cache_finish ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_materials_cache_init()

void EEVEE_materials_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Definition at line 348 of file eevee_materials.c.

References ARRAY_SIZE, EEVEE_PassList::background_accum_ps, EEVEE_PrivateData::background_alpha, EEVEE_PassList::background_ps, BLI_ghash_ptr_new(), BLI_memblock_clear(), BLI_memblock_create, EEVEE_ViewLayerData::common_ubo, LightCache::cube_tx, DRW_cache_fullscreen_quad_get(), DRW_context_state_get(), DRW_PASS_CREATE, DRW_pass_create_instance(), DRW_PASS_INSTANCE_CREATE, DRW_pass_link(), DRW_shgroup_call, DRW_shgroup_create(), DRW_shgroup_material_create(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_block_ref, DRW_shgroup_uniform_float(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), DRW_shgroup_uniform_vec3(), DRW_STATE_BLEND_ADD_FULL, DRW_STATE_CLIP_PLANES, DRW_STATE_DEPTH_EQUAL, DRW_STATE_DEPTH_LESS_EQUAL, DRW_STATE_STENCIL_ALWAYS, DRW_STATE_WRITE_COLOR, DRW_STATE_WRITE_DEPTH, DRW_STATE_WRITE_STENCIL, e_data, EEVEE_CLIP_PASS_CREATE, EEVEE_lookdev_cache_init(), EEVEE_material_get(), EEVEE_PASS_CREATE, EEVEE_shaders_update_noise_sh_get(), EEVEE_world_default_get(), EEVEE_StorageList::g_data, LightCache::grid_tx, EEVEE_ViewLayerData::grid_ubo, EEVEE_PrivateData::light_cache, EEVEE_ViewLayerData::light_ubo, material, EEVEE_PassList::material_accum_ps, EEVEE_ViewLayerData::material_cache, EEVEE_PassList::material_cull_ps, EEVEE_PrivateData::material_hash, EEVEE_PassList::material_ps, EEVEE_PassList::material_sss_cull_ps, EEVEE_PassList::material_sss_ps, EEVEE_TextureList::maxzbuffer, NULL, options, GPUMaterial::pass, EEVEE_TextureList::planar_pool, EEVEE_ViewLayerData::planar_ubo, EEVEE_ViewLayerData::probe_ubo, EEVEE_PrivateData::renderpass_ubo, scene, DRWContextState::scene, sh, EEVEE_ViewLayerData::shadow_cascade_pool, EEVEE_ViewLayerData::shadow_cube_pool, EEVEE_ViewLayerData::shadow_ubo, state, LightCacheTexture::tex, EEVEE_PassList::transparent_pass, EEVEE_Data::txl, EEVEE_PassList::update_noise_pass, VAR_WORLD_BACKGROUND, world, and Scene::world.

Referenced by eevee_cache_init(), eevee_lightbake_cache_create(), and EEVEE_render_cache_init().

◆ EEVEE_materials_cache_populate()

void EEVEE_materials_cache_populate ( EEVEE_Data vedata,
EEVEE_ViewLayerData sldata,
Object ob,
bool cast_shadow 
)

◆ EEVEE_materials_free()

void EEVEE_materials_free ( void  )

Definition at line 964 of file eevee_materials.c.

References DRW_TEXTURE_FREE_SAFE, and e_data.

Referenced by eevee_engine_free().

◆ EEVEE_materials_get_util_tex()

struct GPUTexture* EEVEE_materials_get_util_tex ( void  )

◆ EEVEE_materials_init()

void EEVEE_materials_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
EEVEE_StorageList stl,
EEVEE_FramebufferList fbl 
)

◆ EEVEE_mist_output_accumulate()

void EEVEE_mist_output_accumulate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_mist_output_init()

void EEVEE_mist_output_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_motion_blur_cache_finish()

void EEVEE_motion_blur_cache_finish ( EEVEE_Data vedata)

◆ EEVEE_motion_blur_cache_init()

void EEVEE_motion_blur_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_motion_blur_cache_populate()

void EEVEE_motion_blur_cache_populate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
Object ob 
)

◆ EEVEE_motion_blur_curves_cache_populate()

void EEVEE_motion_blur_curves_cache_populate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
Object ob 
)

◆ EEVEE_motion_blur_curves_data_get()

EEVEE_HairMotionData* EEVEE_motion_blur_curves_data_get ( EEVEE_ObjectMotionData mb_data)

◆ EEVEE_motion_blur_data_free()

void EEVEE_motion_blur_data_free ( EEVEE_MotionBlurData mb)

◆ EEVEE_motion_blur_data_init()

void EEVEE_motion_blur_data_init ( EEVEE_MotionBlurData mb)

◆ EEVEE_motion_blur_draw()

void EEVEE_motion_blur_draw ( EEVEE_Data vedata)

◆ EEVEE_motion_blur_geometry_data_get()

EEVEE_GeometryMotionData* EEVEE_motion_blur_geometry_data_get ( EEVEE_ObjectMotionData mb_data)

◆ EEVEE_motion_blur_hair_cache_populate()

void EEVEE_motion_blur_hair_cache_populate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
Object ob,
struct ParticleSystem psys,
struct ModifierData md 
)

◆ EEVEE_motion_blur_hair_data_get()

EEVEE_HairMotionData* EEVEE_motion_blur_hair_data_get ( EEVEE_ObjectMotionData mb_data,
Object ob 
)

◆ EEVEE_motion_blur_init()

int EEVEE_motion_blur_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_motion_blur_object_data_get()

EEVEE_ObjectMotionData* EEVEE_motion_blur_object_data_get ( EEVEE_MotionBlurData mb,
Object ob,
bool  is_psys 
)

◆ EEVEE_motion_blur_step_set()

void EEVEE_motion_blur_step_set ( EEVEE_Data vedata,
int  step 
)

◆ EEVEE_motion_blur_swap_data()

void EEVEE_motion_blur_swap_data ( EEVEE_Data vedata)

◆ EEVEE_motion_hair_step_free()

void EEVEE_motion_hair_step_free ( EEVEE_HairMotionStepData step_data)

◆ EEVEE_object_curves_cache_populate()

void EEVEE_object_curves_cache_populate ( EEVEE_Data vedata,
EEVEE_ViewLayerData sldata,
Object ob,
bool cast_shadow 
)

◆ EEVEE_object_data_ensure()

EEVEE_ObjectEngineData* EEVEE_object_data_ensure ( Object ob)

◆ EEVEE_object_data_get()

EEVEE_ObjectEngineData* EEVEE_object_data_get ( Object ob)

◆ EEVEE_occlusion_cache_init()

void EEVEE_occlusion_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_occlusion_compute()

void EEVEE_occlusion_compute ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_occlusion_draw_debug()

void EEVEE_occlusion_draw_debug ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_occlusion_free()

void EEVEE_occlusion_free ( void  )

Definition at line 264 of file eevee_occlusion.c.

References DRW_TEXTURE_FREE_SAFE, and e_data.

Referenced by eevee_engine_free().

◆ EEVEE_occlusion_init()

int EEVEE_occlusion_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_occlusion_output_accumulate()

void EEVEE_occlusion_output_accumulate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_occlusion_output_init()

void EEVEE_occlusion_output_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
uint  tot_samples 
)

◆ EEVEE_particle_hair_cache_populate()

void EEVEE_particle_hair_cache_populate ( EEVEE_Data vedata,
EEVEE_ViewLayerData sldata,
Object ob,
bool cast_shadow 
)

◆ EEVEE_random_rotation_m4()

void EEVEE_random_rotation_m4 ( int  sample_ofs,
float  scale,
float  r_mat[4][4] 
)

Definition at line 93 of file eevee_sampling.c.

References BLI_halton_3d(), and rotate_m4().

Referenced by EEVEE_shadows_cube_setup().

◆ EEVEE_reflection_compute()

void EEVEE_reflection_compute ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_reflection_output_accumulate()

void EEVEE_reflection_output_accumulate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_reflection_output_init()

void EEVEE_reflection_output_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
uint  tot_samples 
)

◆ EEVEE_refraction_compute()

void EEVEE_refraction_compute ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_render_cache()

void EEVEE_render_cache ( void vedata,
struct Object ob,
struct RenderEngine engine,
struct Depsgraph depsgraph 
)

◆ EEVEE_render_cache_init()

void EEVEE_render_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_render_draw()

void EEVEE_render_draw ( EEVEE_Data vedata,
struct RenderEngine engine,
struct RenderLayer rl,
const struct rcti rect 
)

Referenced by eevee_render_to_image().

◆ EEVEE_render_init()

bool EEVEE_render_init ( EEVEE_Data ved,
RenderEngine engine,
struct Depsgraph depsgraph 
)

◆ EEVEE_render_modules_init()

void EEVEE_render_modules_init ( EEVEE_Data vedata,
struct RenderEngine engine,
struct Depsgraph depsgraph 
)

◆ EEVEE_render_read_result()

void EEVEE_render_read_result ( EEVEE_Data vedata,
struct RenderEngine engine,
struct RenderLayer rl,
const rcti rect 
)

◆ EEVEE_render_update_passes()

void EEVEE_render_update_passes ( struct RenderEngine engine,
struct Scene scene,
struct ViewLayer view_layer 
)

◆ EEVEE_render_view_sync()

void EEVEE_render_view_sync ( EEVEE_Data vedata,
struct RenderEngine engine,
struct Depsgraph depsgraph 
)

◆ EEVEE_renderpasses_aov_hash()

uint EEVEE_renderpasses_aov_hash ( const ViewLayerAOV aov)

Calculate the hash for an AOV. The least significant bit is used to store the AOV type the rest of the bits are used for the name hash.

Definition at line 63 of file eevee_renderpasses.c.

References AOV_TYPE_COLOR, BLI_hash_string(), EEVEE_AOV_HASH_COLOR_TYPE_MASK, hash, ViewLayerAOV::name, SET_FLAG_FROM_TEST, and ViewLayerAOV::type.

Referenced by EEVEE_materials_init(), and EEVEE_renderpasses_init().

◆ EEVEE_renderpasses_cache_finish()

void EEVEE_renderpasses_cache_finish ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_renderpasses_draw()

void EEVEE_renderpasses_draw ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_renderpasses_draw_debug()

void EEVEE_renderpasses_draw_debug ( EEVEE_Data vedata)

◆ EEVEE_renderpasses_init()

void EEVEE_renderpasses_init ( EEVEE_Data vedata)

◆ EEVEE_renderpasses_only_first_sample_pass_active()

bool EEVEE_renderpasses_only_first_sample_pass_active ( EEVEE_Data vedata)

◆ EEVEE_renderpasses_output_accumulate()

void EEVEE_renderpasses_output_accumulate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
bool  post_effect 
)

◆ EEVEE_renderpasses_output_init()

void EEVEE_renderpasses_output_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
uint  tot_samples 
)

◆ EEVEE_renderpasses_postprocess()

void EEVEE_renderpasses_postprocess ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
eViewLayerEEVEEPassType  renderpass_type,
int  aov_index 
)

Post-process data to construct a specific render-pass

This method will create a shading group to perform the post-processing for the given renderpass_type. The post-processing will be done and the result will be stored in the vedata->txl->renderpass texture.

Only invoke this function for passes that need post-processing.

After invoking this function the active frame-buffer is set to vedata->fbl->renderpass_fb.

Referenced by eevee_render_result_aovs(), eevee_render_result_bloom(), eevee_render_result_mist(), eevee_render_result_normal(), eevee_render_result_occlusion(), eevee_render_result_shadow(), and eevee_render_result_z().

◆ EEVEE_sample_ball()

void EEVEE_sample_ball ( int  sample_ofs,
float  radius,
float  rsample[3] 
)

Special ball distribution: Point are distributed in a way that when they are orthogonally projected into any plane, the resulting distribution is (close to) a uniform disc distribution.

Definition at line 12 of file eevee_sampling.c.

References BLI_halton_3d(), cosf, fmaxf, M_PI, mul_v3_fl(), r, sinf, sqrt(), and sqrtf.

Referenced by shadow_cube_random_position_set().

◆ EEVEE_sample_ellipse()

void EEVEE_sample_ellipse ( int  sample_ofs,
const float  x_axis[3],
const float  y_axis[3],
float  size_x,
float  size_y,
float  rsample[3] 
)

◆ EEVEE_sample_rectangle()

void EEVEE_sample_rectangle ( int  sample_ofs,
const float  x_axis[3],
const float  y_axis[3],
float  size_x,
float  size_y,
float  rsample[3] 
)

Definition at line 38 of file eevee_sampling.c.

References BLI_halton_2d(), madd_v3_v3fl(), and zero_v3().

Referenced by shadow_cube_random_position_set().

◆ EEVEE_screen_raytrace_cache_init()

void EEVEE_screen_raytrace_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Screen space ray-tracing overview

Following Frostbite stochastic SSR.

  • First pass Trace rays across the depth buffer. The hit position and PDF are recorded in a RGBA16F render target for each ray (sample).
  • We down-sample the previous frame color buffer.
  • For each final pixel, we gather neighbors rays and choose a color buffer mipmap for each ray using its PDF. (filtered importance sampling) We then evaluate the lighting from the probes and mix the results together.

Definition at line 101 of file eevee_screen_raytrace.c.

References EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_ubo, LightCache::cube_tx, DRW_PASS_CREATE, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_float_copy(), DRW_shgroup_uniform_int(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), DRW_shgroup_uniform_texture_ref_ex(), DRW_shgroup_uniform_vec2_copy(), DRW_STATE_BLEND_ADD, DRW_STATE_WRITE_COLOR, EEVEE_materials_get_util_tex(), EEVEE_shaders_effect_reflection_resolve_sh_get(), EEVEE_shaders_effect_reflection_trace_sh_get(), EFFECT_SSR, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_TextureList::filtered_radiance, EEVEE_StorageList::g_data, GPU_SAMPLER_DEFAULT, GPU_texture_get_mipmap_size(), EEVEE_ViewLayerData::grid_ubo, EEVEE_EffectsInfo::gtao_horizons, EEVEE_PrivateData::light_cache, EEVEE_ViewLayerData::light_ubo, EEVEE_TextureList::maxzbuffer, NULL, EEVEE_TextureList::planar_depth, EEVEE_TextureList::planar_pool, EEVEE_ViewLayerData::planar_ubo, EEVEE_ViewLayerData::probe_ubo, EEVEE_Data::psl, EEVEE_EffectsInfo::reflection_trace_full, EEVEE_ViewLayerData::renderpass_ubo, EEVEE_ViewLayerData::shadow_cascade_pool, EEVEE_ViewLayerData::shadow_cube_pool, EEVEE_ViewLayerData::shadow_ubo, EEVEE_EffectsInfo::ssr_hit_depth, EEVEE_EffectsInfo::ssr_hit_output, EEVEE_EffectsInfo::ssr_normal_input, EEVEE_PassList::ssr_raytrace, EEVEE_PassList::ssr_resolve, EEVEE_EffectsInfo::ssr_specrough_input, EEVEE_Data::stl, EEVEE_EffectsInfo::taa_current_sample, LightCacheTexture::tex, and EEVEE_Data::txl.

Referenced by eevee_cache_init(), and EEVEE_render_cache_init().

◆ EEVEE_screen_raytrace_init()

int EEVEE_screen_raytrace_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Definition at line 20 of file eevee_screen_raytrace.c.

References EEVEE_ViewLayerData::common_data, DEG_get_evaluated_scene(), DRWContextState::depsgraph, DRW_context_state_get(), DRW_texture_pool_query_2d(), DRW_view_is_persp_get(), DRW_viewport_request_redraw(), DRW_viewport_size_get(), Scene::eevee, EEVEE_screen_raytrace_init(), EEVEE_temporal_sampling_reset(), EFFECT_DOUBLE_BUFFER, EFFECT_NORMAL_BUFFER, EFFECT_RADIANCE_BUFFER, EFFECT_REFRACT, EFFECT_SSR, EEVEE_StorageList::effects, EEVEE_Data::fbl, SceneEEVEE::flag, float(), EEVEE_StorageList::g_data, GPU_framebuffer_texture_attach(), GPU_R16F, GPU_RGBA16F, GPU_RGBA8, EEVEE_FramebufferList::main_fb, max_ii(), NULL, EEVEE_EffectsInfo::reflection_trace_full, SCE_EEVEE_SSR_ENABLED, SCE_EEVEE_SSR_HALF_RESOLUTION, SCE_EEVEE_SSR_REFRACTION, EEVEE_FramebufferList::screen_tracing_fb, EEVEE_CommonUniformBuffer::ssr_border_fac, SceneEEVEE::ssr_border_fade, EEVEE_CommonUniformBuffer::ssr_brdf_bias, EEVEE_CommonUniformBuffer::ssr_firefly_fac, SceneEEVEE::ssr_firefly_fac, EEVEE_EffectsInfo::ssr_hit_depth, EEVEE_EffectsInfo::ssr_hit_output, EEVEE_CommonUniformBuffer::ssr_max_roughness, SceneEEVEE::ssr_max_roughness, EEVEE_CommonUniformBuffer::ssr_quality, SceneEEVEE::ssr_quality, EEVEE_EffectsInfo::ssr_specrough_input, EEVEE_CommonUniformBuffer::ssr_thickness, SceneEEVEE::ssr_thickness, EEVEE_CommonUniformBuffer::ssr_uv_scale, EEVEE_EffectsInfo::ssr_was_persp, EEVEE_EffectsInfo::ssr_was_valid_double_buffer, EEVEE_Data::stl, UNPACK2, and EEVEE_PrivateData::valid_double_buffer.

Referenced by EEVEE_effects_init(), and EEVEE_screen_raytrace_init().

◆ EEVEE_shader_default_surface_nodetree()

struct bNodeTree* EEVEE_shader_default_surface_nodetree ( Material ma)

◆ EEVEE_shader_default_world_nodetree()

struct bNodeTree* EEVEE_shader_default_world_nodetree ( World wo)

◆ eevee_shader_extra_exit()

void eevee_shader_extra_exit ( void  )

Definition at line 37 of file eevee_shaders_extra.cc.

References stage_interface.

Referenced by EEVEE_shaders_free().

◆ eevee_shader_extra_init()

void eevee_shader_extra_init ( void  )

◆ EEVEE_shader_lib_get()

struct DRWShaderLibrary* EEVEE_shader_lib_get ( void  )

Definition at line 328 of file eevee_shaders.c.

References e_data, and eevee_shader_library_ensure().

◆ eevee_shader_material_create_info_amend()

void eevee_shader_material_create_info_amend ( GPUMaterial gpumat,
GPUCodegenOutput codegen,
char *  frag,
char *  vert,
char *  geom,
char *  defines 
)

Hair attributes come from sampler buffer. Transfer attributes to sampler.

Volume grid attributes come from 3D textures. Transfer attributes to samplers.

Definition at line 42 of file eevee_shaders_extra.cc.

References blender::gpu::shader::ShaderCreateInfo::additional_info(), GPUCodegenOutput::attr_load, blender::gpu::shader::ShaderCreateInfo::auto_resource_location(), blender::gpu::shader::BARYCENTRIC_COORD, blender::gpu::shader::BATCH, blender::gpu::shader::ShaderCreateInfo::builtins(), GPUCodegenOutput::create_info, blender::gpu::shader::ShaderCreateInfo::define(), GPUCodegenOutput::displacement, blender::gpu::shader::FLOAT_3D, blender::gpu::shader::FLOAT_BUFFER, blender::gpu::shader::ShaderCreateInfo::fragment_source(), blender::gpu::shader::ShaderCreateInfo::fragment_source_generated, blender::gpu::shader::ShaderCreateInfo::geometry_layout(), blender::gpu::shader::ShaderCreateInfo::geometry_source(), blender::gpu::shader::ShaderCreateInfo::geometry_source_generated, GPU_material_flag_get(), GPU_material_uuid_get(), GPU_MATFLAG_BARYCENTRIC, GPU_MATFLAG_OBJECT_INFO, GPU_MATFLAG_SHADER_TO_RGBA, GPU_MATFLAG_SUBSURFACE, blender::gpu::shader::StageInterfaceInfo::inouts, input, blender::gpu::shader::StageInterfaceInfo::instance_name, blender::gpu::shader::ShaderCreateInfo::legacy_resource_location(), GPUCodegenOutput::material_functions, blender::gpu::shader::StageInterfaceInfo::name, blender::gpu::shader::ShaderCreateInfo::VertIn::name, options, blender::gpu::shader::ShaderCreateInfo::sampler(), stage_interface, GPUCodegenOutput::surface, blender::gpu::shader::TRIANGLE_STRIP, blender::gpu::shader::TRIANGLES, blender::gpu::shader::ShaderCreateInfo::VertIn::type, blender::gpu::shader::ShaderCreateInfo::typedef_source_generated, VAR_MAT_HAIR, VAR_MAT_MESH, VAR_MAT_POINTCLOUD, VAR_MAT_VOLUME, VAR_WORLD_BACKGROUND, VAR_WORLD_PROBE, blender::gpu::shader::ShaderCreateInfo::vertex_inputs_, blender::gpu::shader::ShaderCreateInfo::vertex_out(), blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_, blender::gpu::shader::ShaderCreateInfo::vertex_source(), blender::gpu::shader::ShaderCreateInfo::vertex_source_generated, and GPUCodegenOutput::volume.

Referenced by eevee_material_post_eval().

◆ EEVEE_shaders_bloom_blit_get()

struct GPUShader* EEVEE_shaders_bloom_blit_get ( bool  high_quality)

◆ EEVEE_shaders_bloom_downsample_get()

struct GPUShader* EEVEE_shaders_bloom_downsample_get ( bool  high_quality)

◆ EEVEE_shaders_bloom_resolve_get()

struct GPUShader* EEVEE_shaders_bloom_resolve_get ( bool  high_quality)

◆ EEVEE_shaders_bloom_upsample_get()

struct GPUShader* EEVEE_shaders_bloom_upsample_get ( bool  high_quality)

◆ EEVEE_shaders_cryptomatte_sh_get()

struct GPUShader* EEVEE_shaders_cryptomatte_sh_get ( bool  is_hair)

◆ EEVEE_shaders_depth_of_field_bokeh_get()

struct GPUShader* EEVEE_shaders_depth_of_field_bokeh_get ( void  )

◆ EEVEE_shaders_depth_of_field_dilate_tiles_get()

struct GPUShader* EEVEE_shaders_depth_of_field_dilate_tiles_get ( bool  pass)

◆ EEVEE_shaders_depth_of_field_downsample_get()

struct GPUShader* EEVEE_shaders_depth_of_field_downsample_get ( void  )

◆ EEVEE_shaders_depth_of_field_filter_get()

struct GPUShader* EEVEE_shaders_depth_of_field_filter_get ( void  )

◆ EEVEE_shaders_depth_of_field_flatten_tiles_get()

struct GPUShader* EEVEE_shaders_depth_of_field_flatten_tiles_get ( void  )

◆ EEVEE_shaders_depth_of_field_gather_get()

struct GPUShader* EEVEE_shaders_depth_of_field_gather_get ( EEVEE_DofGatherPass  pass,
bool  bokeh_tx 
)

◆ EEVEE_shaders_depth_of_field_reduce_get()

struct GPUShader* EEVEE_shaders_depth_of_field_reduce_get ( bool  is_copy_pass)

◆ EEVEE_shaders_depth_of_field_resolve_get()

struct GPUShader* EEVEE_shaders_depth_of_field_resolve_get ( bool  use_bokeh_tx,
bool  use_hq_gather 
)

◆ EEVEE_shaders_depth_of_field_scatter_get()

struct GPUShader* EEVEE_shaders_depth_of_field_scatter_get ( bool  is_foreground,
bool  bokeh_tx 
)

◆ EEVEE_shaders_depth_of_field_setup_get()

struct GPUShader* EEVEE_shaders_depth_of_field_setup_get ( void  )

◆ EEVEE_shaders_effect_ambient_occlusion_debug_sh_get()

struct GPUShader* EEVEE_shaders_effect_ambient_occlusion_debug_sh_get ( void  )

◆ EEVEE_shaders_effect_ambient_occlusion_sh_get()

struct GPUShader* EEVEE_shaders_effect_ambient_occlusion_sh_get ( void  )

◆ EEVEE_shaders_effect_color_copy_sh_get()

struct GPUShader* EEVEE_shaders_effect_color_copy_sh_get ( void  )

◆ EEVEE_shaders_effect_downsample_cube_sh_get()

struct GPUShader* EEVEE_shaders_effect_downsample_cube_sh_get ( void  )

◆ EEVEE_shaders_effect_downsample_sh_get()

struct GPUShader* EEVEE_shaders_effect_downsample_sh_get ( void  )

◆ EEVEE_shaders_effect_maxz_copydepth_layer_sh_get()

struct GPUShader* EEVEE_shaders_effect_maxz_copydepth_layer_sh_get ( void  )

◆ EEVEE_shaders_effect_maxz_copydepth_sh_get()

struct GPUShader* EEVEE_shaders_effect_maxz_copydepth_sh_get ( void  )

◆ EEVEE_shaders_effect_maxz_downdepth_layer_sh_get()

struct GPUShader* EEVEE_shaders_effect_maxz_downdepth_layer_sh_get ( void  )

◆ EEVEE_shaders_effect_maxz_downdepth_sh_get()

struct GPUShader* EEVEE_shaders_effect_maxz_downdepth_sh_get ( void  )

◆ EEVEE_shaders_effect_maxz_downlevel_sh_get()

struct GPUShader* EEVEE_shaders_effect_maxz_downlevel_sh_get ( void  )

◆ EEVEE_shaders_effect_minz_copydepth_sh_get()

struct GPUShader* EEVEE_shaders_effect_minz_copydepth_sh_get ( void  )

◆ EEVEE_shaders_effect_minz_downdepth_layer_sh_get()

struct GPUShader* EEVEE_shaders_effect_minz_downdepth_layer_sh_get ( void  )

◆ EEVEE_shaders_effect_minz_downdepth_sh_get()

struct GPUShader* EEVEE_shaders_effect_minz_downdepth_sh_get ( void  )

◆ EEVEE_shaders_effect_minz_downlevel_sh_get()

struct GPUShader* EEVEE_shaders_effect_minz_downlevel_sh_get ( void  )

◆ EEVEE_shaders_effect_mist_sh_get()

struct GPUShader* EEVEE_shaders_effect_mist_sh_get ( void  )

◆ EEVEE_shaders_effect_motion_blur_hair_sh_get()

struct GPUShader* EEVEE_shaders_effect_motion_blur_hair_sh_get ( void  )

◆ EEVEE_shaders_effect_motion_blur_object_sh_get()

struct GPUShader* EEVEE_shaders_effect_motion_blur_object_sh_get ( void  )

◆ EEVEE_shaders_effect_motion_blur_sh_get()

struct GPUShader* EEVEE_shaders_effect_motion_blur_sh_get ( void  )

◆ EEVEE_shaders_effect_motion_blur_velocity_tiles_expand_sh_get()

struct GPUShader* EEVEE_shaders_effect_motion_blur_velocity_tiles_expand_sh_get ( void  )

◆ EEVEE_shaders_effect_motion_blur_velocity_tiles_sh_get()

struct GPUShader* EEVEE_shaders_effect_motion_blur_velocity_tiles_sh_get ( void  )

◆ EEVEE_shaders_effect_reflection_resolve_sh_get()

struct GPUShader* EEVEE_shaders_effect_reflection_resolve_sh_get ( void  )

◆ EEVEE_shaders_effect_reflection_trace_sh_get()

struct GPUShader* EEVEE_shaders_effect_reflection_trace_sh_get ( void  )

◆ EEVEE_shaders_free()

void EEVEE_shaders_free ( void  )

◆ EEVEE_shaders_ggx_lut_sh_get()

struct GPUShader* EEVEE_shaders_ggx_lut_sh_get ( void  )

◆ EEVEE_shaders_ggx_refraction_lut_sh_get()

struct GPUShader* EEVEE_shaders_ggx_refraction_lut_sh_get ( void  )

◆ EEVEE_shaders_material_shaders_init()

void EEVEE_shaders_material_shaders_init ( void  )

◆ EEVEE_shaders_probe_cube_display_sh_get()

struct GPUShader* EEVEE_shaders_probe_cube_display_sh_get ( void  )

◆ EEVEE_shaders_probe_filter_diffuse_sh_get()

struct GPUShader* EEVEE_shaders_probe_filter_diffuse_sh_get ( void  )

◆ EEVEE_shaders_probe_filter_glossy_sh_get()

struct GPUShader* EEVEE_shaders_probe_filter_glossy_sh_get ( void  )

◆ EEVEE_shaders_probe_filter_visibility_sh_get()

struct GPUShader* EEVEE_shaders_probe_filter_visibility_sh_get ( void  )

◆ EEVEE_shaders_probe_grid_display_sh_get()

struct GPUShader* EEVEE_shaders_probe_grid_display_sh_get ( void  )

◆ EEVEE_shaders_probe_grid_fill_sh_get()

struct GPUShader* EEVEE_shaders_probe_grid_fill_sh_get ( void  )

◆ EEVEE_shaders_probe_planar_display_sh_get()

struct GPUShader* EEVEE_shaders_probe_planar_display_sh_get ( void  )

◆ EEVEE_shaders_probe_planar_downsample_sh_get()

struct GPUShader* EEVEE_shaders_probe_planar_downsample_sh_get ( void  )

◆ EEVEE_shaders_renderpasses_post_process_sh_get()

struct GPUShader* EEVEE_shaders_renderpasses_post_process_sh_get ( void  )

◆ eevee_shaders_sh_create_helper()

GPUShader* eevee_shaders_sh_create_helper ( const char *  name,
const char *  vert_name,
const char *  frag_name,
const char *  defines,
bool  use_layered_rendering 
)

◆ EEVEE_shaders_shadow_accum_sh_get()

struct GPUShader* EEVEE_shaders_shadow_accum_sh_get ( void  )

◆ EEVEE_shaders_shadow_sh_get()

struct GPUShader* EEVEE_shaders_shadow_sh_get ( void  )

◆ EEVEE_shaders_studiolight_background_sh_get()

struct GPUShader* EEVEE_shaders_studiolight_background_sh_get ( void  )

◆ EEVEE_shaders_studiolight_probe_sh_get()

struct GPUShader* EEVEE_shaders_studiolight_probe_sh_get ( void  )

◆ EEVEE_shaders_subsurface_first_pass_sh_get()

struct GPUShader* EEVEE_shaders_subsurface_first_pass_sh_get ( void  )

◆ EEVEE_shaders_subsurface_second_pass_sh_get()

struct GPUShader* EEVEE_shaders_subsurface_second_pass_sh_get ( void  )

◆ EEVEE_shaders_subsurface_translucency_sh_get()

struct GPUShader* EEVEE_shaders_subsurface_translucency_sh_get ( void  )

◆ EEVEE_shaders_taa_resolve_sh_get()

struct GPUShader* EEVEE_shaders_taa_resolve_sh_get ( EEVEE_EffectsFlag  enabled_effects)

◆ EEVEE_shaders_update_noise_sh_get()

struct GPUShader* EEVEE_shaders_update_noise_sh_get ( void  )

◆ EEVEE_shaders_velocity_resolve_sh_get()

struct GPUShader* EEVEE_shaders_velocity_resolve_sh_get ( void  )

◆ EEVEE_shaders_volumes_accum_sh_get()

struct GPUShader* EEVEE_shaders_volumes_accum_sh_get ( void  )

◆ EEVEE_shaders_volumes_clear_sh_get()

struct GPUShader* EEVEE_shaders_volumes_clear_sh_get ( void  )

◆ EEVEE_shaders_volumes_integration_sh_get()

struct GPUShader* EEVEE_shaders_volumes_integration_sh_get ( void  )

◆ EEVEE_shaders_volumes_resolve_sh_get()

struct GPUShader* EEVEE_shaders_volumes_resolve_sh_get ( bool  accum)

◆ EEVEE_shaders_volumes_scatter_sh_get()

struct GPUShader* EEVEE_shaders_volumes_scatter_sh_get ( void  )

◆ EEVEE_shaders_volumes_scatter_with_lights_sh_get()

struct GPUShader* EEVEE_shaders_volumes_scatter_with_lights_sh_get ( void  )

◆ EEVEE_shadow_output_accumulate()

void EEVEE_shadow_output_accumulate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_shadow_output_init()

void EEVEE_shadow_output_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
uint  tot_samples 
)

◆ EEVEE_shadows_cache_init()

void EEVEE_shadows_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_shadows_cascade_add()

void EEVEE_shadows_cascade_add ( EEVEE_LightsInfo linfo,
EEVEE_Light evli,
struct Object ob 
)

◆ EEVEE_shadows_caster_register()

void EEVEE_shadows_caster_register ( EEVEE_ViewLayerData sldata,
struct Object ob 
)

◆ EEVEE_shadows_cube_add()

void EEVEE_shadows_cube_add ( EEVEE_LightsInfo linfo,
EEVEE_Light evli,
struct Object ob 
)

◆ EEVEE_shadows_cube_setup()

bool EEVEE_shadows_cube_setup ( EEVEE_LightsInfo linfo,
const EEVEE_Light evli,
int  sample_ofs 
)

Return true if sample has changed and light needs to be updated.

Anti-Aliasing jitter: Add random rotation.

The 2.0 factor is because texel angular size is not even across the cube-map, so we make the rotation range a bit bigger. This will not blur the shadow even if the spread is too big since we are just rotating the shadow cube-map. Note that this may be a rough approximation an may not converge to a perfectly smooth shadow (because sample distribution is quite non-uniform) but is enough in practice.

Definition at line 83 of file eevee_shadows_cube.c.

References compare_v3v3(), copy_v3_v3(), DEG2RADF, e, eevee_light_matrix_get(), EEVEE_random_rotation_m4(), EEVEE_Shadow::far, float(), invert_m4(), EEVEE_Light::invsqrdist, max_ff(), min_ff(), EEVEE_Shadow::near, EEVEE_LightsInfo::shadow_cube_data, shadow_cube_random_position_set(), EEVEE_LightsInfo::shadow_cube_size, EEVEE_LightsInfo::shadow_data, EEVEE_Light::shadow_id, EEVEE_LightsInfo::soft_shadows, sqrt(), EEVEE_Shadow::type_data_id, and update().

Referenced by EEVEE_shadows_update().

◆ EEVEE_shadows_draw()

void EEVEE_shadows_draw ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
struct DRWView view 
)

◆ EEVEE_shadows_draw_cascades()

void EEVEE_shadows_draw_cascades ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
DRWView view,
int  cascade_index 
)

◆ EEVEE_shadows_draw_cubemap()

void EEVEE_shadows_draw_cubemap ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
int  cube_index 
)

◆ EEVEE_shadows_init()

void EEVEE_shadows_init ( EEVEE_ViewLayerData sldata)

◆ EEVEE_shadows_update()

void EEVEE_shadows_update ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_subsurface_add_pass()

void EEVEE_subsurface_add_pass ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
Material ma,
DRWShadingGroup shgrp,
struct GPUMaterial gpumat 
)

◆ EEVEE_subsurface_cache_init()

void EEVEE_subsurface_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_subsurface_compute()

void EEVEE_subsurface_compute ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_subsurface_data_render()

void EEVEE_subsurface_data_render ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_subsurface_draw_init()

void EEVEE_subsurface_draw_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_subsurface_init()

void EEVEE_subsurface_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Referenced by EEVEE_effects_init().

◆ EEVEE_subsurface_output_accumulate()

void EEVEE_subsurface_output_accumulate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_subsurface_output_init()

void EEVEE_subsurface_output_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
uint  tot_samples 
)

◆ EEVEE_temporal_sampling_cache_init()

void EEVEE_temporal_sampling_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_temporal_sampling_create_view()

void EEVEE_temporal_sampling_create_view ( EEVEE_Data vedata)

◆ EEVEE_temporal_sampling_draw()

void EEVEE_temporal_sampling_draw ( EEVEE_Data vedata)

◆ EEVEE_temporal_sampling_init()

int EEVEE_temporal_sampling_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Referenced by EEVEE_effects_init().

◆ EEVEE_temporal_sampling_matrices_calc()

void EEVEE_temporal_sampling_matrices_calc ( EEVEE_EffectsInfo effects,
const double  ht_point[2] 
)

◆ EEVEE_temporal_sampling_offset_calc()

void EEVEE_temporal_sampling_offset_calc ( const double  ht_point[2],
float  filter_size,
float  r_offset[2] 
)

◆ EEVEE_temporal_sampling_reset()

void EEVEE_temporal_sampling_reset ( EEVEE_Data vedata)

◆ EEVEE_temporal_sampling_sample_count_get()

int EEVEE_temporal_sampling_sample_count_get ( const Scene scene,
const EEVEE_StorageList stl 
)

◆ EEVEE_temporal_sampling_update_matrices()

void EEVEE_temporal_sampling_update_matrices ( EEVEE_Data vedata)

Update the matrices based on the current sample.

Note
DRW_MAT_PERS and DRW_MAT_VIEW needs to read the original matrices.

Definition at line 184 of file eevee_temporal_sampling.c.

References BLI_halton_2d(), DRW_view_set_active(), EEVEE_temporal_sampling_matrices_calc(), EEVEE_StorageList::effects, EEVEE_EffectsInfo::taa_current_sample, and EEVEE_EffectsInfo::taa_view.

Referenced by eevee_draw_scene(), and EEVEE_effects_init().

◆ EEVEE_update_noise()

void EEVEE_update_noise ( EEVEE_PassList psl,
EEVEE_FramebufferList fbl,
const double  offsets[3] 
)

◆ EEVEE_view_layer_data_ensure()

EEVEE_ViewLayerData* EEVEE_view_layer_data_ensure ( void  )

◆ EEVEE_view_layer_data_ensure_ex()

EEVEE_ViewLayerData* EEVEE_view_layer_data_ensure_ex ( struct ViewLayer view_layer)

◆ EEVEE_view_layer_data_free()

void EEVEE_view_layer_data_free ( void storage)

◆ EEVEE_view_layer_data_get()

EEVEE_ViewLayerData* EEVEE_view_layer_data_get ( void  )

Definition at line 236 of file eevee_data.c.

References draw_engine_eevee_type, and DRW_view_layer_engine_data_get().

◆ EEVEE_volumes_cache_finish()

void EEVEE_volumes_cache_finish ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Definition at line 341 of file eevee_volumes.c.

References EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_data, EEVEE_ViewLayerData::common_ubo, DRW_PASS_CREATE, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_image_ref(), DRW_shgroup_uniform_texture_ref(), DRW_STATE_BLEND_CUSTOM, DRW_STATE_WRITE_COLOR, e_data, EEVEE_shaders_volumes_integration_sh_get(), EEVEE_shaders_volumes_resolve_sh_get(), EEVEE_shaders_volumes_scatter_sh_get(), EEVEE_shaders_volumes_scatter_with_lights_sh_get(), EFFECT_VOLUMETRIC, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_StorageList::g_data, LightCache::grid_tx, EEVEE_PrivateData::light_cache, EEVEE_ViewLayerData::light_ubo, NULL, EEVEE_ViewLayerData::probe_ubo, EEVEE_Data::psl, EEVEE_ViewLayerData::renderpass_ubo, sh, EEVEE_ViewLayerData::shadow_cascade_pool, EEVEE_ViewLayerData::shadow_cube_pool, EEVEE_ViewLayerData::shadow_ubo, EEVEE_Data::stl, LightCacheTexture::tex, EEVEE_Data::txl, USE_VOLUME_OPTI, EEVEE_CommonUniformBuffer::vol_tex_size, EEVEE_CommonUniformBuffer::vol_use_lights, EEVEE_TextureList::volume_prop_emission, EEVEE_TextureList::volume_prop_extinction, EEVEE_TextureList::volume_prop_phase, EEVEE_TextureList::volume_prop_scattering, EEVEE_TextureList::volume_scatter, EEVEE_TextureList::volume_scatter_history, EEVEE_TextureList::volume_transmit, EEVEE_TextureList::volume_transmit_history, EEVEE_PassList::volumetric_integration_ps, EEVEE_PassList::volumetric_resolve_ps, and EEVEE_PassList::volumetric_scatter_ps.

Referenced by eevee_cache_finish(), eevee_lightbake_cache_create(), and eevee_render_to_image().

◆ EEVEE_volumes_cache_init()

void EEVEE_volumes_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_volumes_cache_object_add()

void EEVEE_volumes_cache_object_add ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
struct Scene scene,
Object ob 
)

◆ EEVEE_volumes_compute()

void EEVEE_volumes_compute ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_volumes_draw_init()

void EEVEE_volumes_draw_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_volumes_free()

void EEVEE_volumes_free ( void  )

Definition at line 549 of file eevee_volumes.c.

References DRW_TEXTURE_FREE_SAFE, and e_data.

Referenced by eevee_engine_free().

◆ EEVEE_volumes_init()

void EEVEE_volumes_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Definition at line 63 of file eevee_volumes.c.

References ceilf, EEVEE_ViewLayerData::common_data, copy_v3_v3_int(), CTX_wm_manager(), DEG_get_evaluated_scene(), DRWContextState::depsgraph, DRW_context_state_get(), DRW_state_is_image_render(), DRW_TEX_WRAP, DRW_texture_create_3d(), DRW_TEXTURE_FREE_SAFE, DRW_view_far_distance_get(), DRW_view_is_persp_get(), DRW_view_near_distance_get(), DRW_viewport_request_redraw(), DRW_viewport_size_get(), e_data, ED_screen_animation_no_scrub(), Scene::eevee, EEVEE_volumes_set_jitter(), EFFECT_TAA, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, DRWContextState::evil_C, EEVEE_Data::fbl, SceneEEVEE::flag, float(), fmaxf, GPU_RGBA8, if(), max_ff(), max_ii(), min_ff(), NULL, SCE_EEVEE_SHADOW_SOFT, SCE_EEVEE_VOLUMETRIC_LIGHTS, SCE_EEVEE_VOLUMETRIC_SHADOWS, EEVEE_Data::stl, EEVEE_EffectsInfo::taa_current_sample, EEVEE_Data::txl, EEVEE_CommonUniformBuffer::vol_coord_scale, EEVEE_CommonUniformBuffer::vol_depth_param, EEVEE_CommonUniformBuffer::vol_history_alpha, EEVEE_CommonUniformBuffer::vol_inv_tex_size, EEVEE_CommonUniformBuffer::vol_shadow_steps, EEVEE_CommonUniformBuffer::vol_tex_size, EEVEE_CommonUniformBuffer::vol_use_lights, EEVEE_CommonUniformBuffer::vol_use_soft_shadows, EEVEE_EffectsInfo::volume_current_sample, EEVEE_EffectsInfo::volume_light_clamp, EEVEE_TextureList::volume_prop_emission, EEVEE_TextureList::volume_prop_extinction, EEVEE_TextureList::volume_prop_phase, EEVEE_TextureList::volume_prop_scattering, EEVEE_TextureList::volume_scatter, EEVEE_TextureList::volume_scatter_history, EEVEE_TextureList::volume_transmit, EEVEE_TextureList::volume_transmit_history, SceneEEVEE::volumetric_end, EEVEE_FramebufferList::volumetric_fb, EEVEE_FramebufferList::volumetric_integ_fb, SceneEEVEE::volumetric_light_clamp, SceneEEVEE::volumetric_sample_distribution, SceneEEVEE::volumetric_samples, EEVEE_FramebufferList::volumetric_scat_fb, SceneEEVEE::volumetric_shadow_samples, SceneEEVEE::volumetric_start, and SceneEEVEE::volumetric_tile_size.

Referenced by EEVEE_effects_init().

◆ EEVEE_volumes_output_accumulate()

void EEVEE_volumes_output_accumulate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_volumes_output_init()

void EEVEE_volumes_output_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
uint  tot_samples 
)

◆ EEVEE_volumes_resolve()

void EEVEE_volumes_resolve ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_volumes_set_jitter()

void EEVEE_volumes_set_jitter ( EEVEE_ViewLayerData sldata,
uint  current_sample 
)

◆ EEVEE_world_data_ensure()

EEVEE_WorldEngineData* EEVEE_world_data_ensure ( World wo)

◆ EEVEE_world_data_get()

EEVEE_WorldEngineData* EEVEE_world_data_get ( World wo)

Definition at line 360 of file eevee_data.c.

References draw_engine_eevee_type, DRW_drawdata_get(), and World::id.

◆ EEVEE_world_default_get()

World* EEVEE_world_default_get ( void  )

Variable Documentation

◆ cubefacemat

const float cubefacemat[6][4][4]
static

Definition at line 1647 of file eevee_private.h.

Referenced by eevee_ensure_cube_views(), and render_cubemap().

◆ draw_engine_eevee_type

struct DrawEngineType draw_engine_eevee_type
extern

◆ EEVEE_ShadowCasterBuffer

EEVEE_ShadowCasterBuffer

◆ texcomat

const float texcomat[4][4]
static
Initial value:
= {
{0.5f, 0.0f, 0.0f, 0.0f},
{0.0f, 0.5f, 0.0f, 0.0f},
{0.0f, 0.0f, 0.5f, 0.0f},
{0.5f, 0.5f, 0.5f, 1.0f},
}

Definition at line 1638 of file eevee_private.h.