10 .vertex_in(0, Type::VEC3,
"pos")
11 .fragment_out(0, Type::VEC4,
"fragColor")
12 .sampler(0, ImageType::DEPTH_2D,
"depthBuffer")
13 .sampler(1, ImageType::FLOAT_3D,
"densityTexture")
14 .push_constant(Type::INT,
"samplesLen")
18 .vertex_source(
"workbench_volume_vert.glsl")
19 .fragment_source(
"workbench_volume_frag.glsl")
20 .additional_info(
"draw_object_infos");
29 .define(
"VOLUME_SMOKE")
30 .sampler(2, ImageType::FLOAT_3D,
"flameTexture")
31 .sampler(3, ImageType::FLOAT_1D,
"flameColorTexture")
32 .additional_info(
"draw_mesh",
"draw_resource_id_varying");
35 .define(
"VOLUME_OBJECT")
36 .push_constant(Type::MAT4,
"volumeTextureToObject")
38 .push_constant(Type::MAT4,
"volumeObjectToTexture")
39 .additional_info(
"draw_volume",
"draw_resource_id_varying");
49 .sampler(4, ImageType::UINT_3D,
"flagTexture")
50 .sampler(5, ImageType::FLOAT_1D,
"transferTexture")
51 .push_constant(Type::BOOL,
"showPhi")
52 .push_constant(Type::BOOL,
"showFlags")
53 .push_constant(Type::BOOL,
"showPressure")
57 .sampler(4, ImageType::FLOAT_3D,
"shadowTexture")
58 .push_constant(Type::VEC3,
"activeColor");
79 .define(
"VOLUME_SLICE")
80 .vertex_in(1, Type::VEC3,
"uvs")
81 .vertex_out(workbench_volume_iface)
82 .push_constant(Type::INT,
"sliceAxis")
91 #define WORKBENCH_VOLUME_SLICE_VARIATIONS(prefix, ...) \
92 GPU_SHADER_CREATE_INFO(prefix##_slice) \
93 .additional_info("workbench_volume_slice", __VA_ARGS__) \
94 .do_static_compilation(true); \
95 GPU_SHADER_CREATE_INFO(prefix##_no_slice) \
96 .additional_info(__VA_ARGS__) \
97 .do_static_compilation(true);
99 #define WORKBENCH_VOLUME_COBA_VARIATIONS(prefix, ...) \
100 WORKBENCH_VOLUME_SLICE_VARIATIONS(prefix##_coba, "workbench_volume_coba", __VA_ARGS__) \
101 WORKBENCH_VOLUME_SLICE_VARIATIONS(prefix##_no_coba, "workbench_volume_no_coba", __VA_ARGS__)
103 #define WORKBENCH_VOLUME_INTERP_VARIATIONS(prefix, ...) \
104 WORKBENCH_VOLUME_COBA_VARIATIONS(prefix##_linear, "workbench_volume_linear", __VA_ARGS__) \
105 WORKBENCH_VOLUME_COBA_VARIATIONS(prefix##_cubic, "workbench_volume_cubic", __VA_ARGS__) \
106 WORKBENCH_VOLUME_COBA_VARIATIONS(prefix##_closest, "workbench_volume_closest", __VA_ARGS__)
108 #define WORKBENCH_VOLUME_SMOKE_VARIATIONS(prefix, ...) \
109 WORKBENCH_VOLUME_INTERP_VARIATIONS(prefix##_smoke, "workbench_volume_smoke", __VA_ARGS__) \
110 WORKBENCH_VOLUME_INTERP_VARIATIONS(prefix##_object, "workbench_volume_object", __VA_ARGS__)
#define GPU_SHADER_INTERFACE_INFO(_interface, _inst_name)
#define WORKBENCH_VOLUME_SMOKE_VARIATIONS(prefix,...)
GPU_SHADER_CREATE_INFO(workbench_volume_linear).define("USE_TRILINEAR")