12 .vertex_in(0, Type::VEC3,
"pos")
13 .fragment_out(0, Type::VEC4,
"fragColor")
14 .sampler(0, ImageType::DEPTH_2D,
"depthBuffer")
15 .sampler(1, ImageType::FLOAT_3D,
"densityTexture")
16 .push_constant(Type::INT,
"samplesLen")
17 .push_constant(Type::FLOAT,
"noiseOfs")
18 .push_constant(Type::FLOAT,
"stepLength")
19 .push_constant(Type::FLOAT,
"densityScale")
20 .push_constant(Type::BOOL,
"do_depth_test")
21 .vertex_source(
"workbench_volume_vert.glsl")
22 .fragment_source(
"workbench_volume_frag.glsl");
25 .define(
"WORKBENCH_NEXT")
26 .sampler(6, ImageType::UINT_2D,
"stencil_tx")
27 .additional_info(
"workbench_volume_common",
"draw_object_infos_new",
"draw_view");
35 .define(
"VOLUME_SMOKE")
36 .sampler(2, ImageType::FLOAT_3D,
"flameTexture")
37 .sampler(3, ImageType::FLOAT_1D,
"flameColorTexture")
38 .additional_info(
"draw_resource_id_varying");
41 .define(
"VOLUME_OBJECT")
42 .push_constant(Type::MAT4,
"volumeTextureToObject")
44 .push_constant(Type::MAT4,
"volumeObjectToTexture")
45 .additional_info(
"draw_resource_id_varying");
48 .additional_info(
"workbench_volume_smoke_common",
"draw_modelmat_new");
51 .additional_info(
"workbench_volume_object_common",
"draw_volume_new");
61 .sampler(4, ImageType::UINT_3D,
"flagTexture")
62 .sampler(5, ImageType::FLOAT_1D,
"transferTexture")
63 .push_constant(Type::BOOL,
"showPhi")
64 .push_constant(Type::BOOL,
"showFlags")
65 .push_constant(Type::BOOL,
"showPressure")
66 .push_constant(Type::FLOAT,
"gridScale");
69 .sampler(4, ImageType::FLOAT_3D,
"shadowTexture")
70 .push_constant(Type::VEC3,
"activeColor");
91 .define(
"VOLUME_SLICE")
92 .vertex_in(1, Type::VEC3,
"uvs")
93 .vertex_out(workbench_volume_iface)
94 .push_constant(Type::INT,
"sliceAxis")
95 .push_constant(Type::FLOAT,
"slicePosition");
103#define WORKBENCH_VOLUME_SLICE_VARIATIONS(prefix, ...) \
104 GPU_SHADER_CREATE_INFO(prefix##_slice) \
105 .additional_info("workbench_volume_slice", __VA_ARGS__) \
106 .do_static_compilation(true); \
107 GPU_SHADER_CREATE_INFO(prefix##_no_slice) \
108 .additional_info(__VA_ARGS__) \
109 .do_static_compilation(true);
111#define WORKBENCH_VOLUME_COBA_VARIATIONS(prefix, ...) \
112 WORKBENCH_VOLUME_SLICE_VARIATIONS(prefix##_coba, "workbench_volume_coba", __VA_ARGS__) \
113 WORKBENCH_VOLUME_SLICE_VARIATIONS(prefix##_no_coba, "workbench_volume_no_coba", __VA_ARGS__)
115#define WORKBENCH_VOLUME_INTERP_VARIATIONS(prefix, ...) \
116 WORKBENCH_VOLUME_COBA_VARIATIONS(prefix##_linear, "workbench_volume_linear", __VA_ARGS__) \
117 WORKBENCH_VOLUME_COBA_VARIATIONS(prefix##_cubic, "workbench_volume_cubic", __VA_ARGS__) \
118 WORKBENCH_VOLUME_COBA_VARIATIONS(prefix##_closest, "workbench_volume_closest", __VA_ARGS__)
120#define WORKBENCH_VOLUME_SMOKE_VARIATIONS(prefix, ...) \
121 WORKBENCH_VOLUME_INTERP_VARIATIONS(prefix##_smoke, "workbench_volume_smoke", __VA_ARGS__) \
122 WORKBENCH_VOLUME_INTERP_VARIATIONS(prefix##_object, "workbench_volume_object", __VA_ARGS__)
#define GPU_SHADER_INTERFACE_INFO(_interface, _inst_name)
#define GPU_SHADER_CREATE_INFO(_info)
#define WORKBENCH_VOLUME_SMOKE_VARIATIONS(prefix,...)