Blender  V3.3
Macros | Enumerations | Variables
workbench_shader.cc File Reference
#include "DRW_render.h"
#include <string>
#include "workbench_engine.h"
#include "workbench_private.h"

Go to the source code of this file.

Macros

#define MAX_LIGHTING   3
 

Enumerations

enum  eWORKBENCH_TextureType { TEXTURE_SH_NONE = 0 , TEXTURE_SH_SINGLE , TEXTURE_SH_TILED , TEXTURE_SH_MAX }
 

Functions

Conversions
static const char * workbench_lighting_mode_to_str (int light)
 
static const char * workbench_datatype_mode_to_str (eWORKBENCH_DataType datatype)
 
static const char * workbench_volume_interp_to_str (eWORKBENCH_VolumeInterpType interp_type)
 
static const char * workbench_texture_type_to_str (eWORKBENCH_TextureType tex_type)
 
static eWORKBENCH_TextureType workbench_texture_type_get (bool textured, bool tiled)
 
Shader request
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 *UNUSED(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)
 
Cleanup
void workbench_shader_free (void)
 

Variables

struct {
   struct GPUShader *   opaque_prepass_sh_cache [GPU_SHADER_CFG_LEN][WORKBENCH_DATATYPE_MAX][TEXTURE_SH_MAX]
 
   struct GPUShader *   transp_prepass_sh_cache [GPU_SHADER_CFG_LEN][WORKBENCH_DATATYPE_MAX][MAX_LIGHTING][TEXTURE_SH_MAX]
 
   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]
 
e_data = {{{{nullptr}}}}
 

Macro Definition Documentation

◆ MAX_LIGHTING

#define MAX_LIGHTING   3

Definition at line 16 of file workbench_shader.cc.

Enumeration Type Documentation

◆ eWORKBENCH_TextureType

Enumerator
TEXTURE_SH_NONE 
TEXTURE_SH_SINGLE 
TEXTURE_SH_TILED 
TEXTURE_SH_MAX 

Definition at line 18 of file workbench_shader.cc.

Function Documentation

◆ workbench_datatype_mode_to_str()

static const char* workbench_datatype_mode_to_str ( eWORKBENCH_DataType  datatype)
static

◆ workbench_lighting_mode_to_str()

static const char* workbench_lighting_mode_to_str ( int  light)
static

◆ 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_merge_infront_get()

GPUShader* workbench_shader_merge_infront_get ( WORKBENCH_PrivateData UNUSEDwpd)

Definition at line 197 of file workbench_shader.cc.

References e_data, and GPU_shader_create_from_info_name().

◆ workbench_shader_opaque_get()

GPUShader* workbench_shader_opaque_get ( WORKBENCH_PrivateData wpd,
eWORKBENCH_DataType  datatype 
)

◆ workbench_shader_opaque_image_get()

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

◆ 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 UNUSEDwpd)

Definition at line 205 of file workbench_shader.cc.

References e_data, and GPU_shader_create_from_info_name().

◆ workbench_shader_volume_get()

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

◆ workbench_texture_type_get()

static eWORKBENCH_TextureType workbench_texture_type_get ( bool  textured,
bool  tiled 
)
static

Definition at line 119 of file workbench_shader.cc.

References TEXTURE_SH_NONE, TEXTURE_SH_SINGLE, and TEXTURE_SH_TILED.

Referenced by workbench_shader_get_ex().

◆ workbench_texture_type_to_str()

static const char* workbench_texture_type_to_str ( eWORKBENCH_TextureType  tex_type)
static

◆ workbench_volume_interp_to_str()

static const char* workbench_volume_interp_to_str ( eWORKBENCH_VolumeInterpType  interp_type)
static

Variable Documentation

◆ aa_accum_sh

struct GPUShader* aa_accum_sh

Definition at line 47 of file workbench_shader.cc.

◆ cavity_sh

struct GPUShader* cavity_sh[2][2]

Definition at line 39 of file workbench_shader.cc.

◆ dof_blur1_sh

struct GPUShader* dof_blur1_sh

Definition at line 43 of file workbench_shader.cc.

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

◆ dof_blur2_sh

struct GPUShader* dof_blur2_sh

Definition at line 44 of file workbench_shader.cc.

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

◆ dof_downsample_sh

struct GPUShader* dof_downsample_sh

Definition at line 42 of file workbench_shader.cc.

◆ dof_prepare_sh

struct GPUShader* dof_prepare_sh

Definition at line 41 of file workbench_shader.cc.

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

◆ dof_resolve_sh

struct GPUShader* dof_resolve_sh

Definition at line 45 of file workbench_shader.cc.

◆ 

struct { ... } e_data

◆ merge_infront_sh

struct GPUShader* merge_infront_sh

Definition at line 34 of file workbench_shader.cc.

◆ oit_resolve_sh

struct GPUShader* oit_resolve_sh

Definition at line 32 of file workbench_shader.cc.

◆ opaque_composite_sh

struct GPUShader* opaque_composite_sh[MAX_LIGHTING]

Definition at line 31 of file workbench_shader.cc.

◆ opaque_prepass_sh_cache

Definition at line 27 of file workbench_shader.cc.

◆ outline_sh

struct GPUShader* outline_sh

Definition at line 33 of file workbench_shader.cc.

◆ shadow_depth_fail_sh

struct GPUShader* shadow_depth_fail_sh[2][2]

Definition at line 37 of file workbench_shader.cc.

◆ shadow_depth_pass_sh

struct GPUShader* shadow_depth_pass_sh[2]

Definition at line 36 of file workbench_shader.cc.

◆ smaa_sh

struct GPUShader* smaa_sh[3]

Definition at line 48 of file workbench_shader.cc.

◆ transp_prepass_sh_cache

Definition at line 28 of file workbench_shader.cc.

◆ volume_sh

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

Definition at line 50 of file workbench_shader.cc.