Blender  V2.93
Macros | Enumerations | Functions | Variables
workbench_shader.c File Reference
#include "DRW_render.h"
#include "BLI_dynstr.h"
#include "BLI_string_utils.h"
#include "workbench_engine.h"
#include "workbench_private.h"

Go to the source code of this file.

Macros

#define MAX_LIGHTING   3
 
#define MAX_COLOR   3
 
#define VOLUME_SH_MAX   (1 << (VOLUME_SH_CUBIC + 1))
 

Enumerations

enum  { VOLUME_SH_SLICE = 0 , VOLUME_SH_COBA , VOLUME_SH_CUBIC }
 

Functions

void workbench_shader_library_ensure (void)
 
static char * workbench_build_defines (WORKBENCH_PrivateData *wpd, bool textured, bool tiled, bool cavity, bool curvature)
 
static int workbench_color_index (WORKBENCH_PrivateData *UNUSED(wpd), bool textured, bool tiled)
 
static GPUShaderworkbench_shader_get_ex (WORKBENCH_PrivateData *wpd, bool transp, eWORKBENCH_DataType datatype, bool textured, bool tiled)
 
GPUShaderworkbench_shader_opaque_get (WORKBENCH_PrivateData *wpd, eWORKBENCH_DataType datatype)
 
GPUShaderworkbench_shader_opaque_image_get (WORKBENCH_PrivateData *wpd, eWORKBENCH_DataType datatype, bool tiled)
 
GPUShaderworkbench_shader_transparent_get (WORKBENCH_PrivateData *wpd, eWORKBENCH_DataType datatype)
 
GPUShaderworkbench_shader_transparent_image_get (WORKBENCH_PrivateData *wpd, eWORKBENCH_DataType datatype, bool tiled)
 
GPUShaderworkbench_shader_composite_get (WORKBENCH_PrivateData *wpd)
 
GPUShaderworkbench_shader_merge_infront_get (WORKBENCH_PrivateData *UNUSED(wpd))
 
GPUShaderworkbench_shader_transparent_resolve_get (WORKBENCH_PrivateData *wpd)
 
static GPUShaderworkbench_shader_shadow_pass_get_ex (bool depth_pass, bool manifold, bool cap)
 
GPUShaderworkbench_shader_shadow_pass_get (bool manifold)
 
GPUShaderworkbench_shader_shadow_fail_get (bool manifold, bool cap)
 
GPUShaderworkbench_shader_cavity_get (bool cavity, bool curvature)
 
GPUShaderworkbench_shader_outline_get (void)
 
void workbench_shader_depth_of_field_get (GPUShader **prepare_sh, GPUShader **downsample_sh, GPUShader **blur1_sh, GPUShader **blur2_sh, GPUShader **resolve_sh)
 
GPUShaderworkbench_shader_antialiasing_accumulation_get (void)
 
GPUShaderworkbench_shader_antialiasing_get (int stage)
 
GPUShaderworkbench_shader_volume_get (bool slice, bool coba, eWORKBENCH_VolumeInterpType interp_type, bool smoke)
 
void workbench_shader_free (void)
 

Variables

char datatoc_common_math_lib_glsl []
 
char datatoc_common_math_geom_lib_glsl []
 
char datatoc_common_hair_lib_glsl []
 
char datatoc_common_pointcloud_lib_glsl []
 
char datatoc_common_view_lib_glsl []
 
char datatoc_common_smaa_lib_glsl []
 
char datatoc_workbench_prepass_vert_glsl []
 
char datatoc_workbench_prepass_hair_vert_glsl []
 
char datatoc_workbench_prepass_pointcloud_vert_glsl []
 
char datatoc_workbench_prepass_frag_glsl []
 
char datatoc_workbench_effect_cavity_frag_glsl []
 
char datatoc_workbench_effect_outline_frag_glsl []
 
char datatoc_workbench_effect_dof_frag_glsl []
 
char datatoc_workbench_effect_taa_frag_glsl []
 
char datatoc_workbench_effect_smaa_frag_glsl []
 
char datatoc_workbench_effect_smaa_vert_glsl []
 
char datatoc_workbench_composite_frag_glsl []
 
char datatoc_workbench_transparent_accum_frag_glsl []
 
char datatoc_workbench_transparent_resolve_frag_glsl []
 
char datatoc_workbench_merge_infront_frag_glsl []
 
char datatoc_workbench_shadow_vert_glsl []
 
char datatoc_workbench_shadow_geom_glsl []
 
char datatoc_workbench_shadow_caps_geom_glsl []
 
char datatoc_workbench_shadow_debug_frag_glsl []
 
char datatoc_workbench_volume_vert_glsl []
 
char datatoc_workbench_volume_frag_glsl []
 
char datatoc_workbench_cavity_lib_glsl []
 
char datatoc_workbench_common_lib_glsl []
 
char datatoc_workbench_curvature_lib_glsl []
 
char datatoc_workbench_data_lib_glsl []
 
char datatoc_workbench_image_lib_glsl []
 
char datatoc_workbench_matcap_lib_glsl []
 
char datatoc_workbench_material_lib_glsl []
 
char datatoc_workbench_shader_interface_lib_glsl []
 
char datatoc_workbench_world_light_lib_glsl []
 
char datatoc_gpu_shader_depth_only_frag_glsl []
 
char datatoc_gpu_shader_common_obinfos_lib_glsl []
 
struct {
   struct GPUShader *   opaque_prepass_sh_cache [GPU_SHADER_CFG_LEN][WORKBENCH_DATATYPE_MAX][MAX_COLOR]
 
   struct GPUShader *   transp_prepass_sh_cache [GPU_SHADER_CFG_LEN][WORKBENCH_DATATYPE_MAX][MAX_LIGHTING][MAX_COLOR]
 
   struct GPUShader *   opaque_composite_sh [MAX_LIGHTING]
 
   struct GPUShader *   oit_resolve_sh
 
   struct GPUShader *   outline_sh
 
   struct GPUShader *   merge_infront_sh
 
   struct GPUShader *   shadow_depth_pass_sh [2]
 
   struct GPUShader *   shadow_depth_fail_sh [2][2]
 
   struct GPUShader *   cavity_sh [2][2]
 
   struct GPUShader *   dof_prepare_sh
 
   struct GPUShader *   dof_downsample_sh
 
   struct GPUShader *   dof_blur1_sh
 
   struct GPUShader *   dof_blur2_sh
 
   struct GPUShader *   dof_resolve_sh
 
   struct GPUShader *   aa_accum_sh
 
   struct GPUShader *   smaa_sh [3]
 
   struct GPUShader *   volume_sh [2][2][3][2]
 
   struct DRWShaderLibrary *   lib
 
e_data = {{{{NULL}}}}
 

Macro Definition Documentation

◆ MAX_COLOR

#define MAX_COLOR   3

Definition at line 80 of file workbench_shader.c.

◆ MAX_LIGHTING

#define MAX_LIGHTING   3

Definition at line 79 of file workbench_shader.c.

◆ VOLUME_SH_MAX

#define VOLUME_SH_MAX   (1 << (VOLUME_SH_CUBIC + 1))

Definition at line 88 of file workbench_shader.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
VOLUME_SH_SLICE 
VOLUME_SH_COBA 
VOLUME_SH_CUBIC 

Definition at line 82 of file workbench_shader.c.

Function Documentation

◆ workbench_build_defines()

static char* workbench_build_defines ( WORKBENCH_PrivateData wpd,
bool  textured,
bool  tiled,
bool  cavity,
bool  curvature 
)
static

◆ workbench_color_index()

static int workbench_color_index ( WORKBENCH_PrivateData UNUSEDwpd,
bool  textured,
bool  tiled 
)
static

Definition at line 181 of file workbench_shader.c.

References BLI_assert, and MAX_COLOR.

Referenced by workbench_shader_get_ex().

◆ workbench_shader_antialiasing_accumulation_get()

GPUShader* workbench_shader_antialiasing_accumulation_get ( void  )

◆ workbench_shader_antialiasing_get()

GPUShader* workbench_shader_antialiasing_get ( int  stage)

◆ workbench_shader_cavity_get()

GPUShader* workbench_shader_cavity_get ( bool  cavity,
bool  curvature 
)

◆ workbench_shader_composite_get()

GPUShader* workbench_shader_composite_get ( WORKBENCH_PrivateData wpd)

◆ workbench_shader_depth_of_field_get()

void workbench_shader_depth_of_field_get ( GPUShader **  prepare_sh,
GPUShader **  downsample_sh,
GPUShader **  blur1_sh,
GPUShader **  blur2_sh,
GPUShader **  resolve_sh 
)

◆ workbench_shader_free()

void workbench_shader_free ( void  )

◆ workbench_shader_get_ex()

static GPUShader* workbench_shader_get_ex ( WORKBENCH_PrivateData wpd,
bool  transp,
eWORKBENCH_DataType  datatype,
bool  textured,
bool  tiled 
)
static

◆ workbench_shader_library_ensure()

void workbench_shader_library_ensure ( void  )

◆ workbench_shader_merge_infront_get()

GPUShader* workbench_shader_merge_infront_get ( WORKBENCH_PrivateData UNUSEDwpd)

◆ workbench_shader_opaque_get()

GPUShader* workbench_shader_opaque_get ( WORKBENCH_PrivateData wpd,
eWORKBENCH_DataType  datatype 
)

Definition at line 237 of file workbench_shader.c.

References workbench_shader_get_ex().

Referenced by blender::draw::TEST_F(), and workbench_opaque_cache_init().

◆ workbench_shader_opaque_image_get()

GPUShader* workbench_shader_opaque_image_get ( WORKBENCH_PrivateData wpd,
eWORKBENCH_DataType  datatype,
bool  tiled 
)

Definition at line 242 of file workbench_shader.c.

References workbench_shader_get_ex().

Referenced by blender::draw::TEST_F(), and workbench_opaque_cache_init().

◆ workbench_shader_outline_get()

GPUShader* workbench_shader_outline_get ( void  )

◆ workbench_shader_shadow_fail_get()

GPUShader* workbench_shader_shadow_fail_get ( bool  manifold,
bool  cap 
)

◆ workbench_shader_shadow_pass_get()

GPUShader* workbench_shader_shadow_pass_get ( bool  manifold)

◆ workbench_shader_shadow_pass_get_ex()

static GPUShader* workbench_shader_shadow_pass_get_ex ( bool  depth_pass,
bool  manifold,
bool  cap 
)
static

◆ workbench_shader_transparent_get()

GPUShader* workbench_shader_transparent_get ( WORKBENCH_PrivateData wpd,
eWORKBENCH_DataType  datatype 
)

◆ workbench_shader_transparent_image_get()

GPUShader* workbench_shader_transparent_image_get ( WORKBENCH_PrivateData wpd,
eWORKBENCH_DataType  datatype,
bool  tiled 
)

◆ workbench_shader_transparent_resolve_get()

GPUShader* workbench_shader_transparent_resolve_get ( WORKBENCH_PrivateData wpd)

◆ workbench_shader_volume_get()

GPUShader* workbench_shader_volume_get ( bool  slice,
bool  coba,
eWORKBENCH_VolumeInterpType  interp_type,
bool  smoke 
)

Variable Documentation

◆ aa_accum_sh

struct GPUShader* aa_accum_sh

Definition at line 111 of file workbench_shader.c.

◆ cavity_sh

struct GPUShader* cavity_sh[2][2]

Definition at line 103 of file workbench_shader.c.

◆ datatoc_common_hair_lib_glsl

char datatoc_common_hair_lib_glsl[]
extern

◆ datatoc_common_math_geom_lib_glsl

char datatoc_common_math_geom_lib_glsl[]
extern

◆ datatoc_common_math_lib_glsl

char datatoc_common_math_lib_glsl[]
extern

◆ datatoc_common_pointcloud_lib_glsl

char datatoc_common_pointcloud_lib_glsl[]
extern

◆ datatoc_common_smaa_lib_glsl

char datatoc_common_smaa_lib_glsl[]
extern

◆ datatoc_common_view_lib_glsl

char datatoc_common_view_lib_glsl[]
extern

◆ datatoc_gpu_shader_common_obinfos_lib_glsl

char datatoc_gpu_shader_common_obinfos_lib_glsl[]
extern

◆ datatoc_gpu_shader_depth_only_frag_glsl

char datatoc_gpu_shader_depth_only_frag_glsl[]
extern

◆ datatoc_workbench_cavity_lib_glsl

char datatoc_workbench_cavity_lib_glsl[]
extern

◆ datatoc_workbench_common_lib_glsl

char datatoc_workbench_common_lib_glsl[]
extern

◆ datatoc_workbench_composite_frag_glsl

char datatoc_workbench_composite_frag_glsl[]
extern

◆ datatoc_workbench_curvature_lib_glsl

char datatoc_workbench_curvature_lib_glsl[]
extern

◆ datatoc_workbench_data_lib_glsl

char datatoc_workbench_data_lib_glsl[]
extern

◆ datatoc_workbench_effect_cavity_frag_glsl

char datatoc_workbench_effect_cavity_frag_glsl[]
extern

◆ datatoc_workbench_effect_dof_frag_glsl

char datatoc_workbench_effect_dof_frag_glsl[]
extern

◆ datatoc_workbench_effect_outline_frag_glsl

char datatoc_workbench_effect_outline_frag_glsl[]
extern

◆ datatoc_workbench_effect_smaa_frag_glsl

char datatoc_workbench_effect_smaa_frag_glsl[]
extern

◆ datatoc_workbench_effect_smaa_vert_glsl

char datatoc_workbench_effect_smaa_vert_glsl[]
extern

◆ datatoc_workbench_effect_taa_frag_glsl

char datatoc_workbench_effect_taa_frag_glsl[]
extern

◆ datatoc_workbench_image_lib_glsl

char datatoc_workbench_image_lib_glsl[]
extern

◆ datatoc_workbench_matcap_lib_glsl

char datatoc_workbench_matcap_lib_glsl[]
extern

◆ datatoc_workbench_material_lib_glsl

char datatoc_workbench_material_lib_glsl[]
extern

◆ datatoc_workbench_merge_infront_frag_glsl

char datatoc_workbench_merge_infront_frag_glsl[]
extern

◆ datatoc_workbench_prepass_frag_glsl

char datatoc_workbench_prepass_frag_glsl[]
extern

Referenced by workbench_shader_get_ex().

◆ datatoc_workbench_prepass_hair_vert_glsl

char datatoc_workbench_prepass_hair_vert_glsl[]
extern

Referenced by workbench_shader_get_ex().

◆ datatoc_workbench_prepass_pointcloud_vert_glsl

char datatoc_workbench_prepass_pointcloud_vert_glsl[]
extern

Referenced by workbench_shader_get_ex().

◆ datatoc_workbench_prepass_vert_glsl

char datatoc_workbench_prepass_vert_glsl[]
extern

Referenced by workbench_shader_get_ex().

◆ datatoc_workbench_shader_interface_lib_glsl

char datatoc_workbench_shader_interface_lib_glsl[]
extern

◆ datatoc_workbench_shadow_caps_geom_glsl

char datatoc_workbench_shadow_caps_geom_glsl[]
extern

◆ datatoc_workbench_shadow_debug_frag_glsl

char datatoc_workbench_shadow_debug_frag_glsl[]
extern

◆ datatoc_workbench_shadow_geom_glsl

char datatoc_workbench_shadow_geom_glsl[]
extern

◆ datatoc_workbench_shadow_vert_glsl

char datatoc_workbench_shadow_vert_glsl[]
extern

◆ datatoc_workbench_transparent_accum_frag_glsl

char datatoc_workbench_transparent_accum_frag_glsl[]
extern

Referenced by workbench_shader_get_ex().

◆ datatoc_workbench_transparent_resolve_frag_glsl

char datatoc_workbench_transparent_resolve_frag_glsl[]
extern

◆ datatoc_workbench_volume_frag_glsl

char datatoc_workbench_volume_frag_glsl[]
extern

◆ datatoc_workbench_volume_vert_glsl

char datatoc_workbench_volume_vert_glsl[]
extern

◆ datatoc_workbench_world_light_lib_glsl

char datatoc_workbench_world_light_lib_glsl[]
extern

◆ dof_blur1_sh

struct GPUShader* dof_blur1_sh

Definition at line 107 of file workbench_shader.c.

Referenced by blender::draw::TEST_F().

◆ dof_blur2_sh

struct GPUShader* dof_blur2_sh

Definition at line 108 of file workbench_shader.c.

Referenced by blender::draw::TEST_F().

◆ dof_downsample_sh

struct GPUShader* dof_downsample_sh

Definition at line 106 of file workbench_shader.c.

◆ dof_prepare_sh

struct GPUShader* dof_prepare_sh

Definition at line 105 of file workbench_shader.c.

Referenced by blender::draw::TEST_F().

◆ dof_resolve_sh

struct GPUShader* dof_resolve_sh

Definition at line 109 of file workbench_shader.c.

◆ 

struct { ... } e_data

◆ lib

struct DRWShaderLibrary* lib

Definition at line 116 of file workbench_shader.c.

◆ merge_infront_sh

struct GPUShader* merge_infront_sh

Definition at line 98 of file workbench_shader.c.

◆ oit_resolve_sh

struct GPUShader* oit_resolve_sh

Definition at line 96 of file workbench_shader.c.

◆ opaque_composite_sh

struct GPUShader* opaque_composite_sh[MAX_LIGHTING]

Definition at line 95 of file workbench_shader.c.

◆ opaque_prepass_sh_cache

struct GPUShader* opaque_prepass_sh_cache[GPU_SHADER_CFG_LEN][WORKBENCH_DATATYPE_MAX][MAX_COLOR]

Definition at line 91 of file workbench_shader.c.

◆ outline_sh

struct GPUShader* outline_sh

Definition at line 97 of file workbench_shader.c.

◆ shadow_depth_fail_sh

struct GPUShader* shadow_depth_fail_sh[2][2]

Definition at line 101 of file workbench_shader.c.

◆ shadow_depth_pass_sh

struct GPUShader* shadow_depth_pass_sh[2]

Definition at line 100 of file workbench_shader.c.

◆ smaa_sh

struct GPUShader* smaa_sh[3]

Definition at line 112 of file workbench_shader.c.

◆ transp_prepass_sh_cache

Definition at line 92 of file workbench_shader.c.

◆ volume_sh

struct GPUShader* volume_sh[2][2][3][2]

Definition at line 114 of file workbench_shader.c.