10 .vertex_in(0, Type::VEC3,
"pos")
11 .vertex_in(1, Type::VEC3,
"nor")
12 .vertex_in(2, Type::VEC4,
"ac")
13 .vertex_in(3, Type::VEC2,
"au")
14 .vertex_source(
"workbench_prepass_vert.glsl")
15 .additional_info(
"draw_mesh")
16 .additional_info(
"draw_resource_handle");
19 .sampler(0, ImageType::FLOAT_BUFFER,
"ac", Frequency::BATCH)
20 .sampler(1, ImageType::FLOAT_BUFFER,
"au", Frequency::BATCH)
21 .vertex_source(
"workbench_prepass_hair_vert.glsl")
22 .additional_info(
"draw_hair")
23 .additional_info(
"draw_resource_handle");
26 .vertex_source(
"workbench_prepass_pointcloud_vert.glsl")
27 .additional_info(
"draw_pointcloud")
28 .additional_info(
"draw_resource_handle");
39 .sampler(2, ImageType::FLOAT_2D,
"imageTexture", Frequency::BATCH)
40 .push_constant(Type::BOOL,
"imagePremult")
41 .push_constant(
Type::FLOAT,
"imageTransparencyCutoff")
42 .define(
"V3D_SHADING_TEXTURE_COLOR");
45 .sampler(2, ImageType::FLOAT_2D_ARRAY,
"imageTileArray", Frequency::BATCH)
46 .sampler(3, ImageType::FLOAT_1D_ARRAY,
"imageTileData", Frequency::BATCH)
47 .push_constant(Type::BOOL,
"imagePremult")
48 .push_constant(
Type::FLOAT,
"imageTransparencyCutoff")
49 .define(
"V3D_SHADING_TEXTURE_COLOR")
50 .define(
"TEXTURE_IMAGE_ARRAY");
61 .define(
"V3D_LIGHTING_MATCAP")
62 .sampler(4, ImageType::FLOAT_2D,
"matcap_diffuse_tx", Frequency::PASS)
63 .sampler(5, ImageType::FLOAT_2D,
"matcap_specular_tx", Frequency::PASS);
72 .smooth(Type::VEC3,
"normal_interp")
73 .smooth(Type::VEC3,
"color_interp")
75 .smooth(Type::VEC2,
"uv_interp")
76 .flat(Type::INT,
"object_id")
81 .uniform_buf(4,
"WorldData",
"world_data", Frequency::PASS)
82 .uniform_buf(5,
"vec4",
"materials_data[4096]", Frequency::PASS)
83 .push_constant(Type::INT,
"materialIndex")
84 .push_constant(Type::BOOL,
"useMatcap")
85 .vertex_out(workbench_material_iface);
96 .fragment_out(0, Type::VEC4,
"transparentAccum")
97 .fragment_out(1, Type::VEC4,
"revealageAccum")
99 .push_constant(Type::BOOL,
"forceShadowing")
100 .typedef_source(
"workbench_shader_shared.h")
101 .fragment_source(
"workbench_transparent_accum_frag.glsl");
104 .fragment_out(0, Type::VEC4,
"materialData")
105 .fragment_out(1, Type::VEC2,
"normalData")
107 .typedef_source(
"workbench_shader_shared.h")
108 .fragment_source(
"workbench_prepass_frag.glsl");
116 #define WORKBENCH_FINAL_VARIATION(name, ...) \
117 GPU_SHADER_CREATE_INFO(name).additional_info(__VA_ARGS__).do_static_compilation(true);
119 #define WORKBENCH_CLIPPING_VARIATIONS(prefix, ...) \
120 WORKBENCH_FINAL_VARIATION(prefix##_clip, "drw_clipped", __VA_ARGS__) \
121 WORKBENCH_FINAL_VARIATION(prefix##_no_clip, __VA_ARGS__)
123 #define WORKBENCH_TEXTURE_VARIATIONS(prefix, ...) \
124 WORKBENCH_CLIPPING_VARIATIONS(prefix##_tex_none, "workbench_texture_none", __VA_ARGS__) \
125 WORKBENCH_CLIPPING_VARIATIONS(prefix##_tex_single, "workbench_texture_single", __VA_ARGS__) \
126 WORKBENCH_CLIPPING_VARIATIONS(prefix##_tex_tile, "workbench_texture_tile", __VA_ARGS__)
128 #define WORKBENCH_DATATYPE_VARIATIONS(prefix, ...) \
129 WORKBENCH_TEXTURE_VARIATIONS(prefix##_mesh, "workbench_mesh", __VA_ARGS__) \
130 WORKBENCH_TEXTURE_VARIATIONS(prefix##_hair, "workbench_hair", __VA_ARGS__) \
131 WORKBENCH_TEXTURE_VARIATIONS(prefix##_ptcloud, "workbench_pointcloud", __VA_ARGS__)
133 #define WORKBENCH_PIPELINE_VARIATIONS(prefix, ...) \
134 WORKBENCH_DATATYPE_VARIATIONS(prefix##_transp_studio, \
135 "workbench_transparent_accum", \
136 "workbench_lighting_studio", \
138 WORKBENCH_DATATYPE_VARIATIONS(prefix##_transp_matcap, \
139 "workbench_transparent_accum", \
140 "workbench_lighting_matcap", \
142 WORKBENCH_DATATYPE_VARIATIONS(prefix##_transp_flat, \
143 "workbench_transparent_accum", \
144 "workbench_lighting_flat", \
146 WORKBENCH_DATATYPE_VARIATIONS(prefix##_opaque, "workbench_opaque", __VA_ARGS__)
typedef UINT(API *GHOST_WIN32_GetDpiForWindow)(HWND)
#define GPU_SHADER_INTERFACE_INFO(_interface, _inst_name)
#define WORKBENCH_PIPELINE_VARIATIONS(prefix,...)
GPU_SHADER_CREATE_INFO(workbench_texture_none).define("TEXTURE_NONE")