DRW: Remove use of builtin matrices and replace by common_view_lib
This commit is contained in:
@@ -31,6 +31,8 @@
|
|||||||
|
|
||||||
#include "BKE_camera.h"
|
#include "BKE_camera.h"
|
||||||
|
|
||||||
|
#include "BLI_string_utils.h"
|
||||||
|
|
||||||
#include "DEG_depsgraph.h"
|
#include "DEG_depsgraph.h"
|
||||||
#include "DEG_depsgraph_query.h"
|
#include "DEG_depsgraph_query.h"
|
||||||
|
|
||||||
@@ -48,24 +50,28 @@ static struct {
|
|||||||
extern char datatoc_effect_dof_vert_glsl[];
|
extern char datatoc_effect_dof_vert_glsl[];
|
||||||
extern char datatoc_effect_dof_frag_glsl[];
|
extern char datatoc_effect_dof_frag_glsl[];
|
||||||
|
|
||||||
|
extern char datatoc_common_view_lib_glsl[];
|
||||||
|
|
||||||
static void eevee_create_shader_depth_of_field(const bool use_alpha)
|
static void eevee_create_shader_depth_of_field(const bool use_alpha)
|
||||||
{
|
{
|
||||||
|
char *frag = BLI_string_joinN(datatoc_common_view_lib_glsl, datatoc_effect_dof_frag_glsl);
|
||||||
e_data.dof_downsample_sh[use_alpha] = DRW_shader_create_fullscreen(
|
e_data.dof_downsample_sh[use_alpha] = DRW_shader_create_fullscreen(
|
||||||
datatoc_effect_dof_frag_glsl,
|
frag,
|
||||||
use_alpha ? "#define USE_ALPHA_DOF\n"
|
use_alpha ? "#define USE_ALPHA_DOF\n"
|
||||||
"#define STEP_DOWNSAMPLE\n" :
|
"#define STEP_DOWNSAMPLE\n" :
|
||||||
"#define STEP_DOWNSAMPLE\n");
|
"#define STEP_DOWNSAMPLE\n");
|
||||||
e_data.dof_scatter_sh[use_alpha] = DRW_shader_create(datatoc_effect_dof_vert_glsl,
|
e_data.dof_scatter_sh[use_alpha] = DRW_shader_create(datatoc_effect_dof_vert_glsl,
|
||||||
NULL,
|
NULL,
|
||||||
datatoc_effect_dof_frag_glsl,
|
frag,
|
||||||
use_alpha ? "#define USE_ALPHA_DOF\n"
|
use_alpha ? "#define USE_ALPHA_DOF\n"
|
||||||
"#define STEP_SCATTER\n" :
|
"#define STEP_SCATTER\n" :
|
||||||
"#define STEP_SCATTER\n");
|
"#define STEP_SCATTER\n");
|
||||||
e_data.dof_resolve_sh[use_alpha] = DRW_shader_create_fullscreen(datatoc_effect_dof_frag_glsl,
|
e_data.dof_resolve_sh[use_alpha] = DRW_shader_create_fullscreen(frag,
|
||||||
use_alpha ?
|
use_alpha ?
|
||||||
"#define USE_ALPHA_DOF\n"
|
"#define USE_ALPHA_DOF\n"
|
||||||
"#define STEP_RESOLVE\n" :
|
"#define STEP_RESOLVE\n" :
|
||||||
"#define STEP_RESOLVE\n");
|
"#define STEP_RESOLVE\n");
|
||||||
|
MEM_freeN(frag);
|
||||||
}
|
}
|
||||||
|
|
||||||
int EEVEE_depth_of_field_init(EEVEE_ViewLayerData *UNUSED(sldata),
|
int EEVEE_depth_of_field_init(EEVEE_ViewLayerData *UNUSED(sldata),
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
|
|
||||||
uniform mat4 ProjectionMatrix;
|
|
||||||
|
|
||||||
uniform sampler2D colorBuffer;
|
uniform sampler2D colorBuffer;
|
||||||
uniform sampler2D depthBuffer;
|
uniform sampler2D depthBuffer;
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
* Converted and adapted from HLSL to GLSL by Clément Foucault
|
* Converted and adapted from HLSL to GLSL by Clément Foucault
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uniform mat4 ProjectionMatrix;
|
|
||||||
uniform vec2 invertedViewportSize;
|
uniform vec2 invertedViewportSize;
|
||||||
uniform vec2 nearFar;
|
uniform vec2 nearFar;
|
||||||
uniform vec3 dofParams;
|
uniform vec3 dofParams;
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#include "DRW_render.h"
|
#include "DRW_render.h"
|
||||||
|
|
||||||
#include "BLI_dynstr.h"
|
#include "BLI_dynstr.h"
|
||||||
|
#include "BLI_string_utils.h"
|
||||||
|
|
||||||
#include "workbench_engine.h"
|
#include "workbench_engine.h"
|
||||||
#include "workbench_private.h"
|
#include "workbench_private.h"
|
||||||
@@ -359,32 +360,24 @@ void workbench_shader_depth_of_field_get(GPUShader **prepare_sh,
|
|||||||
GPUShader **resolve_sh)
|
GPUShader **resolve_sh)
|
||||||
{
|
{
|
||||||
if (e_data.dof_prepare_sh == NULL) {
|
if (e_data.dof_prepare_sh == NULL) {
|
||||||
e_data.dof_prepare_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl,
|
char *frag = BLI_string_joinN(datatoc_common_view_lib_glsl,
|
||||||
"#define PREPARE\n");
|
datatoc_workbench_effect_dof_frag_glsl);
|
||||||
|
e_data.dof_prepare_sh = DRW_shader_create_fullscreen(frag, "#define PREPARE\n");
|
||||||
e_data.dof_downsample_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl,
|
e_data.dof_downsample_sh = DRW_shader_create_fullscreen(frag, "#define DOWNSAMPLE\n");
|
||||||
"#define DOWNSAMPLE\n");
|
|
||||||
#if 0 /* TODO(fclem) finish COC min_max optimization */
|
#if 0 /* TODO(fclem) finish COC min_max optimization */
|
||||||
e_data.dof_flatten_v_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl,
|
e_data.dof_flatten_v_sh = DRW_shader_create_fullscreen(frag,
|
||||||
"#define FLATTEN_VERTICAL\n");
|
"#define FLATTEN_VERTICAL\n");
|
||||||
|
e_data.dof_flatten_h_sh = DRW_shader_create_fullscreen(frag,
|
||||||
e_data.dof_flatten_h_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl,
|
|
||||||
"#define FLATTEN_HORIZONTAL\n");
|
"#define FLATTEN_HORIZONTAL\n");
|
||||||
|
e_data.dof_dilate_v_sh = DRW_shader_create_fullscreen(frag,
|
||||||
e_data.dof_dilate_v_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl,
|
|
||||||
"#define DILATE_VERTICAL\n");
|
"#define DILATE_VERTICAL\n");
|
||||||
|
e_data.dof_dilate_h_sh = DRW_shader_create_fullscreen(frag,
|
||||||
e_data.dof_dilate_h_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl,
|
|
||||||
"#define DILATE_HORIZONTAL\n");
|
"#define DILATE_HORIZONTAL\n");
|
||||||
#endif
|
#endif
|
||||||
e_data.dof_blur1_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl,
|
e_data.dof_blur1_sh = DRW_shader_create_fullscreen(frag, "#define BLUR1\n");
|
||||||
"#define BLUR1\n");
|
e_data.dof_blur2_sh = DRW_shader_create_fullscreen(frag, "#define BLUR2\n");
|
||||||
|
e_data.dof_resolve_sh = DRW_shader_create_fullscreen(frag, "#define RESOLVE\n");
|
||||||
e_data.dof_blur2_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl,
|
MEM_freeN(frag);
|
||||||
"#define BLUR2\n");
|
|
||||||
|
|
||||||
e_data.dof_resolve_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl,
|
|
||||||
"#define RESOLVE\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*prepare_sh = e_data.dof_prepare_sh;
|
*prepare_sh = e_data.dof_prepare_sh;
|
||||||
|
|||||||
Reference in New Issue
Block a user