Cleanup: line length, right shift
This commit is contained in:
parent
8af3f531b1
commit
14e5711d69
|
@ -47,21 +47,37 @@ extern char datatoc_effect_bloom_frag_glsl[];
|
|||
|
||||
static void eevee_create_shader_bloom(void)
|
||||
{
|
||||
e_data.bloom_blit_sh[0] = DRW_shader_create_fullscreen(datatoc_effect_bloom_frag_glsl, "#define STEP_BLIT\n");
|
||||
e_data.bloom_blit_sh[1] = DRW_shader_create_fullscreen(datatoc_effect_bloom_frag_glsl, "#define STEP_BLIT\n"
|
||||
"#define HIGH_QUALITY\n");
|
||||
e_data.bloom_blit_sh[0] = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_bloom_frag_glsl,
|
||||
"#define STEP_BLIT\n");
|
||||
e_data.bloom_blit_sh[1] = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_bloom_frag_glsl,
|
||||
"#define STEP_BLIT\n"
|
||||
"#define HIGH_QUALITY\n");
|
||||
|
||||
e_data.bloom_downsample_sh[0] = DRW_shader_create_fullscreen(datatoc_effect_bloom_frag_glsl, "#define STEP_DOWNSAMPLE\n");
|
||||
e_data.bloom_downsample_sh[1] = DRW_shader_create_fullscreen(datatoc_effect_bloom_frag_glsl, "#define STEP_DOWNSAMPLE\n"
|
||||
"#define HIGH_QUALITY\n");
|
||||
e_data.bloom_downsample_sh[0] = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_bloom_frag_glsl,
|
||||
"#define STEP_DOWNSAMPLE\n");
|
||||
e_data.bloom_downsample_sh[1] = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_bloom_frag_glsl,
|
||||
"#define STEP_DOWNSAMPLE\n"
|
||||
"#define HIGH_QUALITY\n");
|
||||
|
||||
e_data.bloom_upsample_sh[0] = DRW_shader_create_fullscreen(datatoc_effect_bloom_frag_glsl, "#define STEP_UPSAMPLE\n");
|
||||
e_data.bloom_upsample_sh[1] = DRW_shader_create_fullscreen(datatoc_effect_bloom_frag_glsl, "#define STEP_UPSAMPLE\n"
|
||||
"#define HIGH_QUALITY\n");
|
||||
e_data.bloom_upsample_sh[0] = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_bloom_frag_glsl,
|
||||
"#define STEP_UPSAMPLE\n");
|
||||
e_data.bloom_upsample_sh[1] = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_bloom_frag_glsl,
|
||||
"#define STEP_UPSAMPLE\n"
|
||||
"#define HIGH_QUALITY\n");
|
||||
|
||||
e_data.bloom_resolve_sh[0] = DRW_shader_create_fullscreen(datatoc_effect_bloom_frag_glsl, "#define STEP_RESOLVE\n");
|
||||
e_data.bloom_resolve_sh[1] = DRW_shader_create_fullscreen(datatoc_effect_bloom_frag_glsl, "#define STEP_RESOLVE\n"
|
||||
"#define HIGH_QUALITY\n");
|
||||
e_data.bloom_resolve_sh[0] = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_bloom_frag_glsl,
|
||||
"#define STEP_RESOLVE\n");
|
||||
e_data.bloom_resolve_sh[1] = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_bloom_frag_glsl,
|
||||
"#define STEP_RESOLVE\n"
|
||||
"#define HIGH_QUALITY\n");
|
||||
}
|
||||
|
||||
int EEVEE_bloom_init(EEVEE_SceneLayerData *UNUSED(sldata), EEVEE_Data *vedata)
|
||||
|
@ -190,7 +206,8 @@ int EEVEE_bloom_init(EEVEE_SceneLayerData *UNUSED(sldata), EEVEE_Data *vedata)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static DRWShadingGroup *eevee_create_bloom_pass(const char *name, EEVEE_EffectsInfo *effects, struct GPUShader *sh, DRWPass **pass, bool upsample)
|
||||
static DRWShadingGroup *eevee_create_bloom_pass(
|
||||
const char *name, EEVEE_EffectsInfo *effects, struct GPUShader *sh, DRWPass **pass, bool upsample)
|
||||
{
|
||||
struct Gwn_Batch *quad = DRW_cache_fullscreen_quad_get();
|
||||
|
||||
|
|
|
@ -80,7 +80,8 @@ static void eevee_lightprobe_data_free(void *storage)
|
|||
|
||||
EEVEE_SceneLayerData *EEVEE_scene_layer_data_get(void)
|
||||
{
|
||||
EEVEE_SceneLayerData **sldata = (EEVEE_SceneLayerData **)DRW_scene_layer_engine_data_get(&draw_engine_eevee_type, &eevee_scene_layer_data_free);
|
||||
EEVEE_SceneLayerData **sldata = (EEVEE_SceneLayerData **)DRW_scene_layer_engine_data_get(
|
||||
&draw_engine_eevee_type, &eevee_scene_layer_data_free);
|
||||
|
||||
if (*sldata == NULL) {
|
||||
*sldata = MEM_callocN(sizeof(**sldata), "EEVEE_SceneLayerData");
|
||||
|
@ -91,7 +92,8 @@ EEVEE_SceneLayerData *EEVEE_scene_layer_data_get(void)
|
|||
|
||||
EEVEE_ObjectEngineData *EEVEE_object_data_get(Object *ob)
|
||||
{
|
||||
EEVEE_ObjectEngineData **oedata = (EEVEE_ObjectEngineData **)DRW_object_engine_data_get(ob, &draw_engine_eevee_type, NULL);
|
||||
EEVEE_ObjectEngineData **oedata = (EEVEE_ObjectEngineData **)DRW_object_engine_data_get(
|
||||
ob, &draw_engine_eevee_type, NULL);
|
||||
|
||||
if (*oedata == NULL) {
|
||||
*oedata = MEM_callocN(sizeof(**oedata), "EEVEE_ObjectEngineData");
|
||||
|
@ -102,7 +104,8 @@ EEVEE_ObjectEngineData *EEVEE_object_data_get(Object *ob)
|
|||
|
||||
EEVEE_LightProbeEngineData *EEVEE_lightprobe_data_get(Object *ob)
|
||||
{
|
||||
EEVEE_LightProbeEngineData **pedata = (EEVEE_LightProbeEngineData **)DRW_object_engine_data_get(ob, &draw_engine_eevee_type, &eevee_lightprobe_data_free);
|
||||
EEVEE_LightProbeEngineData **pedata = (EEVEE_LightProbeEngineData **)DRW_object_engine_data_get(
|
||||
ob, &draw_engine_eevee_type, &eevee_lightprobe_data_free);
|
||||
|
||||
if (*pedata == NULL) {
|
||||
*pedata = MEM_callocN(sizeof(**pedata), "EEVEE_LightProbeEngineData");
|
||||
|
@ -114,7 +117,8 @@ EEVEE_LightProbeEngineData *EEVEE_lightprobe_data_get(Object *ob)
|
|||
|
||||
EEVEE_LampEngineData *EEVEE_lamp_data_get(Object *ob)
|
||||
{
|
||||
EEVEE_LampEngineData **ledata = (EEVEE_LampEngineData **)DRW_object_engine_data_get(ob, &draw_engine_eevee_type, &eevee_lamp_data_free);
|
||||
EEVEE_LampEngineData **ledata = (EEVEE_LampEngineData **)DRW_object_engine_data_get(
|
||||
ob, &draw_engine_eevee_type, &eevee_lamp_data_free);
|
||||
|
||||
if (*ledata == NULL) {
|
||||
*ledata = MEM_callocN(sizeof(**ledata), "EEVEE_LampEngineData");
|
||||
|
|
|
@ -116,16 +116,24 @@ int EEVEE_depth_of_field_init(EEVEE_SceneLayerData *UNUSED(sldata), EEVEE_Data *
|
|||
}
|
||||
|
||||
/* Setup buffers */
|
||||
DRWFboTexture tex_down[3] = {{dof_down_near, DRW_TEX_RGB_11_11_10, DRW_TEX_FILTER}, /* filter to not interfeer with bloom */
|
||||
{&txl->dof_down_far, DRW_TEX_RGB_11_11_10, 0},
|
||||
{&txl->dof_coc, DRW_TEX_RG_16, 0}};
|
||||
DRW_framebuffer_init(&fbl->dof_down_fb, &draw_engine_eevee_type, buffer_size[0], buffer_size[1], tex_down, 3);
|
||||
DRWFboTexture tex_down[3] = {
|
||||
{dof_down_near, DRW_TEX_RGB_11_11_10, DRW_TEX_FILTER}, /* filter to not interfeer with bloom */
|
||||
{&txl->dof_down_far, DRW_TEX_RGB_11_11_10, 0},
|
||||
{&txl->dof_coc, DRW_TEX_RG_16, 0},
|
||||
};
|
||||
DRW_framebuffer_init(
|
||||
&fbl->dof_down_fb, &draw_engine_eevee_type,
|
||||
buffer_size[0], buffer_size[1], tex_down, 3);
|
||||
|
||||
DRWFboTexture tex_scatter_far = {&txl->dof_far_blur, DRW_TEX_RGBA_16, DRW_TEX_FILTER};
|
||||
DRW_framebuffer_init(&fbl->dof_scatter_far_fb, &draw_engine_eevee_type, buffer_size[0], buffer_size[1], &tex_scatter_far, 1);
|
||||
DRW_framebuffer_init(
|
||||
&fbl->dof_scatter_far_fb, &draw_engine_eevee_type,
|
||||
buffer_size[0], buffer_size[1], &tex_scatter_far, 1);
|
||||
|
||||
DRWFboTexture tex_scatter_near = {&txl->dof_near_blur, DRW_TEX_RGBA_16, DRW_TEX_FILTER};
|
||||
DRW_framebuffer_init(&fbl->dof_scatter_near_fb, &draw_engine_eevee_type, buffer_size[0], buffer_size[1], &tex_scatter_near, 1);
|
||||
DRW_framebuffer_init(
|
||||
&fbl->dof_scatter_near_fb, &draw_engine_eevee_type,
|
||||
buffer_size[0], buffer_size[1], &tex_scatter_near, 1);
|
||||
|
||||
/* Parameters */
|
||||
/* TODO UI Options */
|
||||
|
|
|
@ -64,28 +64,45 @@ extern char datatoc_lightprobe_geom_glsl[];
|
|||
static void eevee_create_shader_downsample(void)
|
||||
{
|
||||
e_data.downsample_sh = DRW_shader_create_fullscreen(datatoc_effect_downsample_frag_glsl, NULL);
|
||||
e_data.downsample_cube_sh = DRW_shader_create(datatoc_lightprobe_vert_glsl,
|
||||
datatoc_lightprobe_geom_glsl,
|
||||
datatoc_effect_downsample_cube_frag_glsl, NULL);
|
||||
e_data.downsample_cube_sh = DRW_shader_create(
|
||||
datatoc_lightprobe_vert_glsl,
|
||||
datatoc_lightprobe_geom_glsl,
|
||||
datatoc_effect_downsample_cube_frag_glsl, NULL);
|
||||
|
||||
e_data.minz_downlevel_sh = DRW_shader_create_fullscreen(datatoc_effect_minmaxz_frag_glsl, "#define MIN_PASS\n");
|
||||
e_data.maxz_downlevel_sh = DRW_shader_create_fullscreen(datatoc_effect_minmaxz_frag_glsl, "#define MAX_PASS\n");
|
||||
e_data.minz_downdepth_sh = DRW_shader_create_fullscreen(datatoc_effect_minmaxz_frag_glsl, "#define MIN_PASS\n"
|
||||
"#define INPUT_DEPTH\n");
|
||||
e_data.maxz_downdepth_sh = DRW_shader_create_fullscreen(datatoc_effect_minmaxz_frag_glsl, "#define MAX_PASS\n"
|
||||
"#define INPUT_DEPTH\n");
|
||||
e_data.minz_downdepth_layer_sh = DRW_shader_create_fullscreen(datatoc_effect_minmaxz_frag_glsl, "#define MIN_PASS\n"
|
||||
"#define LAYERED\n"
|
||||
"#define INPUT_DEPTH\n");
|
||||
e_data.maxz_downdepth_layer_sh = DRW_shader_create_fullscreen(datatoc_effect_minmaxz_frag_glsl, "#define MAX_PASS\n"
|
||||
"#define LAYERED\n"
|
||||
"#define INPUT_DEPTH\n");
|
||||
e_data.minz_copydepth_sh = DRW_shader_create_fullscreen(datatoc_effect_minmaxz_frag_glsl, "#define MIN_PASS\n"
|
||||
"#define INPUT_DEPTH\n"
|
||||
"#define COPY_DEPTH\n");
|
||||
e_data.maxz_copydepth_sh = DRW_shader_create_fullscreen(datatoc_effect_minmaxz_frag_glsl, "#define MAX_PASS\n"
|
||||
"#define INPUT_DEPTH\n"
|
||||
"#define COPY_DEPTH\n");
|
||||
e_data.minz_downlevel_sh = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_minmaxz_frag_glsl,
|
||||
"#define MIN_PASS\n");
|
||||
e_data.maxz_downlevel_sh = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_minmaxz_frag_glsl,
|
||||
"#define MAX_PASS\n");
|
||||
e_data.minz_downdepth_sh = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_minmaxz_frag_glsl,
|
||||
"#define MIN_PASS\n"
|
||||
"#define INPUT_DEPTH\n");
|
||||
e_data.maxz_downdepth_sh = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_minmaxz_frag_glsl,
|
||||
"#define MAX_PASS\n"
|
||||
"#define INPUT_DEPTH\n");
|
||||
e_data.minz_downdepth_layer_sh = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_minmaxz_frag_glsl,
|
||||
"#define MIN_PASS\n"
|
||||
"#define LAYERED\n"
|
||||
"#define INPUT_DEPTH\n");
|
||||
e_data.maxz_downdepth_layer_sh = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_minmaxz_frag_glsl,
|
||||
"#define MAX_PASS\n"
|
||||
"#define LAYERED\n"
|
||||
"#define INPUT_DEPTH\n");
|
||||
e_data.minz_copydepth_sh = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_minmaxz_frag_glsl,
|
||||
"#define MIN_PASS\n"
|
||||
"#define INPUT_DEPTH\n"
|
||||
"#define COPY_DEPTH\n");
|
||||
e_data.maxz_copydepth_sh = DRW_shader_create_fullscreen(
|
||||
datatoc_effect_minmaxz_frag_glsl,
|
||||
"#define MAX_PASS\n"
|
||||
"#define INPUT_DEPTH\n"
|
||||
"#define COPY_DEPTH\n");
|
||||
}
|
||||
|
||||
void EEVEE_effects_init(EEVEE_SceneLayerData *sldata, EEVEE_Data *vedata)
|
||||
|
|
|
@ -92,27 +92,41 @@ void EEVEE_lights_init(EEVEE_SceneLayerData *sldata)
|
|||
char *store_shadow_shader_str = BLI_dynstr_get_cstring(ds_frag);
|
||||
BLI_dynstr_free(ds_frag);
|
||||
|
||||
e_data.shadow_store_cube_sh[SHADOW_ESM] = DRW_shader_create_fullscreen(store_shadow_shader_str, "#define ESM\n");
|
||||
e_data.shadow_store_cascade_sh[SHADOW_ESM] = DRW_shader_create_fullscreen(store_shadow_shader_str, "#define ESM\n"
|
||||
"#define CSM\n");
|
||||
e_data.shadow_store_cube_sh[SHADOW_ESM] = DRW_shader_create_fullscreen(
|
||||
store_shadow_shader_str,
|
||||
"#define ESM\n");
|
||||
e_data.shadow_store_cascade_sh[SHADOW_ESM] = DRW_shader_create_fullscreen(
|
||||
store_shadow_shader_str, "#define ESM\n"
|
||||
"#define CSM\n");
|
||||
|
||||
e_data.shadow_store_cube_sh[SHADOW_VSM] = DRW_shader_create_fullscreen(store_shadow_shader_str, "#define VSM\n");
|
||||
e_data.shadow_store_cascade_sh[SHADOW_VSM] = DRW_shader_create_fullscreen(store_shadow_shader_str, "#define VSM\n"
|
||||
"#define CSM\n");
|
||||
e_data.shadow_store_cube_sh[SHADOW_VSM] = DRW_shader_create_fullscreen(
|
||||
store_shadow_shader_str,
|
||||
"#define VSM\n");
|
||||
e_data.shadow_store_cascade_sh[SHADOW_VSM] = DRW_shader_create_fullscreen(
|
||||
store_shadow_shader_str,
|
||||
"#define VSM\n"
|
||||
"#define CSM\n");
|
||||
|
||||
MEM_freeN(store_shadow_shader_str);
|
||||
|
||||
e_data.shadow_copy_cube_sh[SHADOW_ESM] = DRW_shader_create_fullscreen(datatoc_shadow_copy_frag_glsl, "#define ESM\n"
|
||||
"#define COPY\n");
|
||||
e_data.shadow_copy_cascade_sh[SHADOW_ESM] = DRW_shader_create_fullscreen(datatoc_shadow_copy_frag_glsl, "#define ESM\n"
|
||||
"#define COPY\n"
|
||||
"#define CSM\n");
|
||||
e_data.shadow_copy_cube_sh[SHADOW_ESM] = DRW_shader_create_fullscreen(
|
||||
datatoc_shadow_copy_frag_glsl,
|
||||
"#define ESM\n"
|
||||
"#define COPY\n");
|
||||
e_data.shadow_copy_cascade_sh[SHADOW_ESM] = DRW_shader_create_fullscreen(
|
||||
datatoc_shadow_copy_frag_glsl, "#define ESM\n"
|
||||
"#define COPY\n"
|
||||
"#define CSM\n");
|
||||
|
||||
e_data.shadow_copy_cube_sh[SHADOW_VSM] = DRW_shader_create_fullscreen(datatoc_shadow_copy_frag_glsl, "#define VSM\n"
|
||||
"#define COPY\n");
|
||||
e_data.shadow_copy_cascade_sh[SHADOW_VSM] = DRW_shader_create_fullscreen(datatoc_shadow_copy_frag_glsl, "#define VSM\n"
|
||||
"#define COPY\n"
|
||||
"#define CSM\n");
|
||||
e_data.shadow_copy_cube_sh[SHADOW_VSM] = DRW_shader_create_fullscreen(
|
||||
datatoc_shadow_copy_frag_glsl,
|
||||
"#define VSM\n"
|
||||
"#define COPY\n");
|
||||
e_data.shadow_copy_cascade_sh[SHADOW_VSM] = DRW_shader_create_fullscreen(
|
||||
datatoc_shadow_copy_frag_glsl,
|
||||
"#define VSM\n"
|
||||
"#define COPY\n"
|
||||
"#define CSM\n");
|
||||
}
|
||||
|
||||
if (!sldata->lamps) {
|
||||
|
@ -170,7 +184,8 @@ void EEVEE_lights_cache_init(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl)
|
|||
{
|
||||
psl->shadow_cube_store_pass = DRW_pass_create("Shadow Storage Pass", DRW_STATE_WRITE_COLOR);
|
||||
|
||||
DRWShadingGroup *grp = DRW_shgroup_create(e_data.shadow_store_cube_sh[linfo->shadow_method], psl->shadow_cube_store_pass);
|
||||
DRWShadingGroup *grp = DRW_shgroup_create(
|
||||
e_data.shadow_store_cube_sh[linfo->shadow_method], psl->shadow_cube_store_pass);
|
||||
DRW_shgroup_uniform_buffer(grp, "shadowTexture", &sldata->shadow_cube_blur);
|
||||
DRW_shgroup_uniform_block(grp, "shadow_render_block", sldata->shadow_render_ubo);
|
||||
DRW_shgroup_uniform_float(grp, "shadowFilterSize", &linfo->filter_size, 1);
|
||||
|
@ -180,7 +195,8 @@ void EEVEE_lights_cache_init(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl)
|
|||
{
|
||||
psl->shadow_cascade_store_pass = DRW_pass_create("Shadow Cascade Storage Pass", DRW_STATE_WRITE_COLOR);
|
||||
|
||||
DRWShadingGroup *grp = DRW_shgroup_create(e_data.shadow_store_cascade_sh[linfo->shadow_method], psl->shadow_cascade_store_pass);
|
||||
DRWShadingGroup *grp = DRW_shgroup_create(
|
||||
e_data.shadow_store_cascade_sh[linfo->shadow_method], psl->shadow_cascade_store_pass);
|
||||
DRW_shgroup_uniform_buffer(grp, "shadowTexture", &sldata->shadow_cascade_blur);
|
||||
DRW_shgroup_uniform_block(grp, "shadow_render_block", sldata->shadow_render_ubo);
|
||||
DRW_shgroup_uniform_int(grp, "cascadeId", &linfo->current_shadow_cascade, 1);
|
||||
|
@ -191,7 +207,8 @@ void EEVEE_lights_cache_init(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl)
|
|||
{
|
||||
psl->shadow_cube_copy_pass = DRW_pass_create("Shadow Copy Pass", DRW_STATE_WRITE_COLOR);
|
||||
|
||||
DRWShadingGroup *grp = DRW_shgroup_create(e_data.shadow_copy_cube_sh[linfo->shadow_method], psl->shadow_cube_copy_pass);
|
||||
DRWShadingGroup *grp = DRW_shgroup_create(
|
||||
e_data.shadow_copy_cube_sh[linfo->shadow_method], psl->shadow_cube_copy_pass);
|
||||
DRW_shgroup_uniform_buffer(grp, "shadowTexture", &sldata->shadow_cube_target);
|
||||
DRW_shgroup_uniform_block(grp, "shadow_render_block", sldata->shadow_render_ubo);
|
||||
DRW_shgroup_uniform_float(grp, "shadowFilterSize", &linfo->filter_size, 1);
|
||||
|
@ -202,7 +219,8 @@ void EEVEE_lights_cache_init(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl)
|
|||
{
|
||||
psl->shadow_cascade_copy_pass = DRW_pass_create("Shadow Cascade Copy Pass", DRW_STATE_WRITE_COLOR);
|
||||
|
||||
DRWShadingGroup *grp = DRW_shgroup_create(e_data.shadow_copy_cascade_sh[linfo->shadow_method], psl->shadow_cascade_copy_pass);
|
||||
DRWShadingGroup *grp = DRW_shgroup_create(
|
||||
e_data.shadow_copy_cascade_sh[linfo->shadow_method], psl->shadow_cascade_copy_pass);
|
||||
DRW_shgroup_uniform_buffer(grp, "shadowTexture", &sldata->shadow_cascade_target);
|
||||
DRW_shgroup_uniform_block(grp, "shadow_render_block", sldata->shadow_render_ubo);
|
||||
DRW_shgroup_uniform_float(grp, "shadowFilterSize", &linfo->filter_size, 1);
|
||||
|
@ -211,11 +229,15 @@ void EEVEE_lights_cache_init(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl)
|
|||
}
|
||||
|
||||
{
|
||||
psl->shadow_cube_pass = DRW_pass_create("Shadow Cube Pass", DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS);
|
||||
psl->shadow_cube_pass = DRW_pass_create(
|
||||
"Shadow Cube Pass",
|
||||
DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS);
|
||||
}
|
||||
|
||||
{
|
||||
psl->shadow_cascade_pass = DRW_pass_create("Shadow Cascade Pass", DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS);
|
||||
psl->shadow_cascade_pass = DRW_pass_create(
|
||||
"Shadow Cascade Pass",
|
||||
DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS);
|
||||
}
|
||||
|
||||
/* Reset shadow casters list */
|
||||
|
@ -251,7 +273,8 @@ void EEVEE_lights_cache_add(EEVEE_SceneLayerData *sldata, Object *ob)
|
|||
linfo->shadow_cascade_ref[linfo->cpu_cascade_ct] = ob;
|
||||
|
||||
/* Create storage and store indices. */
|
||||
EEVEE_ShadowCascadeData *data = MEM_mallocN(sizeof(EEVEE_ShadowCascadeData), "EEVEE_ShadowCascadeData");
|
||||
EEVEE_ShadowCascadeData *data = MEM_mallocN(
|
||||
sizeof(EEVEE_ShadowCascadeData), "EEVEE_ShadowCascadeData");
|
||||
data->shadow_id = linfo->gpu_shadow_ct;
|
||||
data->cascade_id = linfo->gpu_cascade_ct;
|
||||
data->layer_id = linfo->num_layer;
|
||||
|
@ -273,7 +296,8 @@ void EEVEE_lights_cache_add(EEVEE_SceneLayerData *sldata, Object *ob)
|
|||
linfo->shadow_cube_ref[linfo->cpu_cube_ct] = ob;
|
||||
|
||||
/* Create storage and store indices. */
|
||||
EEVEE_ShadowCubeData *data = MEM_mallocN(sizeof(EEVEE_ShadowCubeData), "EEVEE_ShadowCubeData");
|
||||
EEVEE_ShadowCubeData *data = MEM_mallocN(
|
||||
sizeof(EEVEE_ShadowCubeData), "EEVEE_ShadowCubeData");
|
||||
data->shadow_id = linfo->gpu_shadow_ct;
|
||||
data->cube_id = linfo->gpu_cube_ct;
|
||||
data->layer_id = linfo->num_layer;
|
||||
|
@ -302,7 +326,8 @@ void EEVEE_lights_cache_add(EEVEE_SceneLayerData *sldata, Object *ob)
|
|||
}
|
||||
|
||||
/* Add a shadow caster to the shadowpasses */
|
||||
void EEVEE_lights_cache_shcaster_add(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl, struct Gwn_Batch *geom, float (*obmat)[4])
|
||||
void EEVEE_lights_cache_shcaster_add(
|
||||
EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl, struct Gwn_Batch *geom, float (*obmat)[4])
|
||||
{
|
||||
DRWShadingGroup *grp = DRW_shgroup_instance_create(e_data.shadow_sh, psl->shadow_cube_pass, geom);
|
||||
DRW_shgroup_uniform_block(grp, "shadow_render_block", sldata->shadow_render_ubo);
|
||||
|
@ -365,8 +390,10 @@ void EEVEE_lights_cache_finish(EEVEE_SceneLayerData *sldata)
|
|||
if (!sldata->shadow_cube_target) {
|
||||
/* TODO render everything on the same 2d render target using clip planes and no Geom Shader. */
|
||||
/* Cubemaps */
|
||||
sldata->shadow_cube_target = DRW_texture_create_cube(linfo->shadow_cube_target_size, DRW_TEX_DEPTH_24, 0, NULL);
|
||||
sldata->shadow_cube_blur = DRW_texture_create_cube(linfo->shadow_cube_target_size, shadow_pool_format, DRW_TEX_FILTER, NULL);
|
||||
sldata->shadow_cube_target = DRW_texture_create_cube(
|
||||
linfo->shadow_cube_target_size, DRW_TEX_DEPTH_24, 0, NULL);
|
||||
sldata->shadow_cube_blur = DRW_texture_create_cube(
|
||||
linfo->shadow_cube_target_size, shadow_pool_format, DRW_TEX_FILTER, NULL);
|
||||
}
|
||||
|
||||
if (!sldata->shadow_cascade_target) {
|
||||
|
@ -715,7 +742,8 @@ static void eevee_shadow_cascade_setup(Object *ob, EEVEE_LampsInfo *linfo, EEVEE
|
|||
|
||||
/* Snap projection center to nearest texel to cancel shimmering. */
|
||||
float shadow_origin[2], shadow_texco[2];
|
||||
mul_v2_v2fl(shadow_origin, center, linfo->shadow_size / (2.0f * sh_data->radius[c])); /* Light to texture space. */
|
||||
/* Light to texture space. */
|
||||
mul_v2_v2fl(shadow_origin, center, linfo->shadow_size / (2.0f * sh_data->radius[c]));
|
||||
|
||||
/* Find the nearest texel. */
|
||||
shadow_texco[0] = round(shadow_origin[0]);
|
||||
|
@ -1009,7 +1037,8 @@ void EEVEE_draw_shadows(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl)
|
|||
|
||||
/* Copy using a small 3x3 box filter */
|
||||
linfo->filter_size = linfo->shadow_render_data.stored_texel_size * ((filter_pixel_size > 1.0f) ? 1.0f : 0.0f);
|
||||
DRW_framebuffer_texture_layer_attach(sldata->shadow_store_fb, sldata->shadow_cascade_blur, 0, linfo->current_shadow_cascade, 0);
|
||||
DRW_framebuffer_texture_layer_attach(
|
||||
sldata->shadow_store_fb, sldata->shadow_cascade_blur, 0, linfo->current_shadow_cascade, 0);
|
||||
DRW_framebuffer_bind(sldata->shadow_store_fb);
|
||||
DRW_draw_pass(psl->shadow_cascade_copy_pass);
|
||||
DRW_framebuffer_texture_detach(sldata->shadow_cascade_blur);
|
||||
|
|
|
@ -468,7 +468,8 @@ void EEVEE_update_util_texture(float offset)
|
|||
}
|
||||
|
||||
if (e_data.util_tex == NULL) {
|
||||
e_data.util_tex = DRW_texture_create_2D_array(64, 64, layers, DRW_TEX_RGBA_16, DRW_TEX_FILTER | DRW_TEX_WRAP, (float *)texels);
|
||||
e_data.util_tex = DRW_texture_create_2D_array(
|
||||
64, 64, layers, DRW_TEX_RGBA_16, DRW_TEX_FILTER | DRW_TEX_WRAP, (float *)texels);
|
||||
}
|
||||
else {
|
||||
DRW_texture_update(e_data.util_tex, (float *)texels);
|
||||
|
|
|
@ -157,10 +157,12 @@ int EEVEE_screen_raytrace_init(EEVEE_SceneLayerData *UNUSED(sldata), EEVEE_Data
|
|||
|
||||
/* Raytracing output */
|
||||
/* TODO try integer format for hit coord to increase precision */
|
||||
DRWFboTexture tex_output[4] = {{&stl->g_data->ssr_hit_output[0], DRW_TEX_RGBA_16, DRW_TEX_TEMP},
|
||||
{&stl->g_data->ssr_hit_output[1], DRW_TEX_RGBA_16, DRW_TEX_TEMP},
|
||||
{&stl->g_data->ssr_hit_output[2], DRW_TEX_RGBA_16, DRW_TEX_TEMP},
|
||||
{&stl->g_data->ssr_hit_output[3], DRW_TEX_RGBA_16, DRW_TEX_TEMP}};
|
||||
DRWFboTexture tex_output[4] = {
|
||||
{&stl->g_data->ssr_hit_output[0], DRW_TEX_RGBA_16, DRW_TEX_TEMP},
|
||||
{&stl->g_data->ssr_hit_output[1], DRW_TEX_RGBA_16, DRW_TEX_TEMP},
|
||||
{&stl->g_data->ssr_hit_output[2], DRW_TEX_RGBA_16, DRW_TEX_TEMP},
|
||||
{&stl->g_data->ssr_hit_output[3], DRW_TEX_RGBA_16, DRW_TEX_TEMP},
|
||||
};
|
||||
|
||||
DRW_framebuffer_init(&fbl->screen_tracing_fb, &draw_engine_eevee_type, tracing_res[0], tracing_res[1], tex_output, effects->ssr_ray_count);
|
||||
|
||||
|
|
|
@ -93,26 +93,30 @@ static void eevee_create_shader_volumes(void)
|
|||
e_data.volumetric_common_lamps_lib = BLI_dynstr_get_cstring(ds_frag);
|
||||
BLI_dynstr_free(ds_frag);
|
||||
|
||||
e_data.volumetric_clear_sh = DRW_shader_create_with_lib(datatoc_volumetric_vert_glsl,
|
||||
datatoc_volumetric_geom_glsl,
|
||||
datatoc_volumetric_frag_glsl,
|
||||
e_data.volumetric_common_lib,
|
||||
"#define VOLUMETRICS\n"
|
||||
"#define CLEAR\n");
|
||||
e_data.volumetric_scatter_sh = DRW_shader_create_with_lib(datatoc_volumetric_vert_glsl,
|
||||
datatoc_volumetric_geom_glsl,
|
||||
datatoc_volumetric_scatter_frag_glsl,
|
||||
e_data.volumetric_common_lamps_lib,
|
||||
SHADER_DEFINES
|
||||
"#define VOLUMETRICS\n"
|
||||
"#define VOLUME_SHADOW\n");
|
||||
e_data.volumetric_integration_sh = DRW_shader_create_with_lib(datatoc_volumetric_vert_glsl,
|
||||
datatoc_volumetric_geom_glsl,
|
||||
datatoc_volumetric_integration_frag_glsl,
|
||||
e_data.volumetric_common_lib, NULL);
|
||||
e_data.volumetric_resolve_sh = DRW_shader_create_with_lib(datatoc_gpu_shader_fullscreen_vert_glsl, NULL,
|
||||
datatoc_volumetric_resolve_frag_glsl,
|
||||
e_data.volumetric_common_lib, NULL);
|
||||
e_data.volumetric_clear_sh = DRW_shader_create_with_lib(
|
||||
datatoc_volumetric_vert_glsl,
|
||||
datatoc_volumetric_geom_glsl,
|
||||
datatoc_volumetric_frag_glsl,
|
||||
e_data.volumetric_common_lib,
|
||||
"#define VOLUMETRICS\n"
|
||||
"#define CLEAR\n");
|
||||
e_data.volumetric_scatter_sh = DRW_shader_create_with_lib(
|
||||
datatoc_volumetric_vert_glsl,
|
||||
datatoc_volumetric_geom_glsl,
|
||||
datatoc_volumetric_scatter_frag_glsl,
|
||||
e_data.volumetric_common_lamps_lib,
|
||||
SHADER_DEFINES
|
||||
"#define VOLUMETRICS\n"
|
||||
"#define VOLUME_SHADOW\n");
|
||||
e_data.volumetric_integration_sh = DRW_shader_create_with_lib(
|
||||
datatoc_volumetric_vert_glsl,
|
||||
datatoc_volumetric_geom_glsl,
|
||||
datatoc_volumetric_integration_frag_glsl,
|
||||
e_data.volumetric_common_lib, NULL);
|
||||
e_data.volumetric_resolve_sh = DRW_shader_create_with_lib(
|
||||
datatoc_gpu_shader_fullscreen_vert_glsl, NULL,
|
||||
datatoc_volumetric_resolve_frag_glsl,
|
||||
e_data.volumetric_common_lib, NULL);
|
||||
}
|
||||
|
||||
int EEVEE_volumes_init(EEVEE_SceneLayerData *sldata, EEVEE_Data *vedata)
|
||||
|
|
Loading…
Reference in New Issue