diff options
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders/workbench_prepass.desc.h')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_prepass.desc.h | 404 |
1 files changed, 199 insertions, 205 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_prepass.desc.h b/source/blender/draw/engines/workbench/shaders/workbench_prepass.desc.h index 8b502944648..9b788d74ebb 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_prepass.desc.h +++ b/source/blender/draw/engines/workbench/shaders/workbench_prepass.desc.h @@ -5,54 +5,46 @@ /** \name Object Type * \{ */ -GPU_SHADER_DESCRIPTOR(workbench_mesh, - { - .vertex_inputs = - { - [0] = VERTEX_INPUT(VEC3, "pos"), - [1] = VERTEX_INPUT(VEC3, "nor"), - [2] = VERTEX_INPUT(VEC4, "ac"), - [3] = VERTEX_INPUT(VEC2, "au"), - }, - .vertex_source = "workbench_prepass_vert.glsl", - }) +GPU_SHADER_DESCRIPTOR(workbench_mesh) +{ + .vertex_inputs = + { + [0] = VERTEX_INPUT(VEC3, "pos"), + [1] = VERTEX_INPUT(VEC3, "nor"), + [2] = VERTEX_INPUT(VEC4, "ac"), + [3] = VERTEX_INPUT(VEC2, "au"), + }, + .vertex_source = "workbench_prepass_vert.glsl", +}; -GPU_SHADER_DESCRIPTOR(workbench_hair, - { - .vertex_source = "workbench_prepass_hair_vert.glsl", - .resources = - { - [DESCRIPTOR_SET_0] = - { - [0] = SAMPLER(FLOAT_BUFFER, "ac", GPU_SAMPLER_DEFAULT), - [1] = SAMPLER(FLOAT_BUFFER, "au", GPU_SAMPLER_DEFAULT), - }, - }, - .additional_descriptors = - { - 0, - /* TODO */ - // &draw_hair, - }, - }) +GPU_SHADER_DESCRIPTOR(workbench_hair) +{ + .resources = + { + [DESCRIPTOR_SET_0] = + { + [0] = SAMPLER(FLOAT_BUFFER, "ac", GPU_SAMPLER_DEFAULT), + [1] = SAMPLER(FLOAT_BUFFER, "au", GPU_SAMPLER_DEFAULT), + }, + }, + .vertex_source = "workbench_prepass_hair_vert.glsl", + /* TODO */ + // .additional_descriptors = { "draw_hair", }, +}; -GPU_SHADER_DESCRIPTOR(workbench_pointcloud, - { - .vertex_inputs = - { - [0] = VERTEX_INPUT(VEC4, "pos"), - /* ---- Instanced attribs ---- */ - [1] = VERTEX_INPUT(VEC3, "pos_inst"), - [2] = VERTEX_INPUT(VEC3, "nor"), - }, - .vertex_source = "workbench_prepass_pointcloud_vert.glsl", - .additional_descriptors = - { - 0, - /* TODO */ - // &draw_pointcloud, - }, - }) +GPU_SHADER_DESCRIPTOR(workbench_pointcloud) +{ + .vertex_inputs = + { + [0] = VERTEX_INPUT(VEC4, "pos"), + /* ---- Instanced attribs ---- */ + [1] = VERTEX_INPUT(VEC3, "pos_inst"), + [2] = VERTEX_INPUT(VEC3, "nor"), + }, + .vertex_source = "workbench_prepass_pointcloud_vert.glsl", + /* TODO */ + // .additional_descriptors = { "draw_pointcloud", }, +}; /** \} */ @@ -60,52 +52,50 @@ GPU_SHADER_DESCRIPTOR(workbench_pointcloud, /** \name Texture Type * \{ */ -GPU_SHADER_DESCRIPTOR(workbench_texture_none, - { - .defines = - { - [0] = "#define TEXTURE_NONE\n", - }, - }) +GPU_SHADER_DESCRIPTOR(workbench_texture_none) +{ + .defines = + { + [0] = "#define TEXTURE_NONE\n", + }, +}; -GPU_SHADER_DESCRIPTOR( - workbench_texture_single, - { - .resources = - { - [DESCRIPTOR_SET_0] = - { - /* ---- Hair buffers ---- */ - // [0] = SAMPLER(FLOAT_BUFFER, "ac", GPU_SAMPLER_DEFAULT), - // [1] = SAMPLER(FLOAT_BUFFER, "au", GPU_SAMPLER_DEFAULT), - [2] = SAMPLER(FLOAT_2D, "imageTexture", GPU_SAMPLER_DEFAULT), - }, - }, - .defines = - { - [0] = "#define V3D_SHADING_TEXTURE_COLOR\n", - }, - }) +GPU_SHADER_DESCRIPTOR(workbench_texture_single) +{ + .resources = + { + [DESCRIPTOR_SET_0] = + { + /* ---- Hair buffers ---- */ + // [0] = SAMPLER(FLOAT_BUFFER, "ac", GPU_SAMPLER_DEFAULT), + // [1] = SAMPLER(FLOAT_BUFFER, "au", GPU_SAMPLER_DEFAULT), + [2] = SAMPLER(FLOAT_2D, "imageTexture", GPU_SAMPLER_DEFAULT), + }, + }, + .defines = + { + [0] = "#define V3D_SHADING_TEXTURE_COLOR\n", + }, +}; -GPU_SHADER_DESCRIPTOR( - workbench_texture_tile, - { - .resources = - { - [DESCRIPTOR_SET_0] = - { - /* ---- Hair buffers ---- */ - // [0] = SAMPLER(FLOAT_BUFFER, "ac", GPU_SAMPLER_DEFAULT), - // [1] = SAMPLER(FLOAT_BUFFER, "au", GPU_SAMPLER_DEFAULT), - [2] = SAMPLER(FLOAT_2D_ARRAY, "imageTileArray", GPU_SAMPLER_DEFAULT), - [3] = SAMPLER(FLOAT_1D_ARRAY, "imageTileData", GPU_SAMPLER_DEFAULT), - }, - }, - .defines = - { - [0] = "#define TEXTURE_IMAGE_ARRAY\n", - }, - }) +GPU_SHADER_DESCRIPTOR(workbench_texture_tile) +{ + .resources = + { + [DESCRIPTOR_SET_0] = + { + /* ---- Hair buffers ---- */ + // [0] = SAMPLER(FLOAT_BUFFER, "ac", GPU_SAMPLER_DEFAULT), + // [1] = SAMPLER(FLOAT_BUFFER, "au", GPU_SAMPLER_DEFAULT), + [2] = SAMPLER(FLOAT_2D_ARRAY, "imageTileArray", GPU_SAMPLER_DEFAULT), + [3] = SAMPLER(FLOAT_1D_ARRAY, "imageTileData", GPU_SAMPLER_DEFAULT), + }, + }, + .defines = + { + [0] = "#define TEXTURE_IMAGE_ARRAY\n", + }, +}; /** \} */ @@ -113,29 +103,29 @@ GPU_SHADER_DESCRIPTOR( /** \name Lighting Type * \{ */ -GPU_SHADER_DESCRIPTOR(workbench_lighting_studio, - { - .defines = - { - [1] = "#define V3D_LIGHTING_STUDIO\n", - }, - }) +GPU_SHADER_DESCRIPTOR(workbench_lighting_studio) +{ + .defines = + { + [1] = "#define V3D_LIGHTING_STUDIO\n", + }, +}; -GPU_SHADER_DESCRIPTOR(workbench_lighting_matcap, - { - .defines = - { - [1] = "#define V3D_LIGHTING_MATCAP\n", - }, - }) +GPU_SHADER_DESCRIPTOR(workbench_lighting_matcap) +{ + .defines = + { + [1] = "#define V3D_LIGHTING_MATCAP\n", + }, +}; -GPU_SHADER_DESCRIPTOR(workbench_lighting_flat, - { - .defines = - { - [1] = "#define V3D_LIGHTING_FLAT\n", - }, - }) +GPU_SHADER_DESCRIPTOR(workbench_lighting_flat) +{ + .defines = + { + [1] = "#define V3D_LIGHTING_FLAT\n", + }, +}; /** \} */ @@ -143,28 +133,28 @@ GPU_SHADER_DESCRIPTOR(workbench_lighting_flat, /** \name Material Interface * \{ */ -GPU_STAGE_INTERFACE_CREATE(workbench_material_iface, - { - {VEC3, "normal_interp"}, - {VEC3, "color_interp"}, - {FLOAT, "alpha_interp"}, - {VEC2, "uv_interp"}, - {INT, "object_id", FLAT}, - {FLOAT, "roughness", FLAT}, - {FLOAT, "metallic", FLAT}, - }) +GPU_STAGE_INTERFACE_CREATE(workbench_material_iface) +{ + {VEC3, "normal_interp"}, + {VEC3, "color_interp"}, + {FLOAT, "alpha_interp"}, + {VEC2, "uv_interp"}, + {INT, "object_id", FLAT}, + {FLOAT, "roughness", FLAT}, + {FLOAT, "metallic", FLAT}, +}; -GPU_SHADER_DESCRIPTOR(workbench_material, - { - .vertex_out_interfaces = - { - [0] = STAGE_INTERFACE("", workbench_material_iface), - }, - .additional_descriptors = - { - &draw_view, - }, - }) +GPU_SHADER_DESCRIPTOR(workbench_material) +{ + .vertex_out_interfaces = + { + [0] = STAGE_INTERFACE("", workbench_material_iface), + }, + .additional_descriptors = + { + "draw_view", + }, +}; /** \} */ @@ -172,46 +162,48 @@ GPU_SHADER_DESCRIPTOR(workbench_material, /** \name Pipeline Type * \{ */ -GPU_SHADER_DESCRIPTOR(workbench_transparent_accum, - { - .fragment_outputs = - { - /* Note: Blending will be skipped on objectId because output is a - non-normalized integer buffer. */ - [0] = FRAGMENT_OUTPUT(VEC4, "transparentAccum"), - [1] = FRAGMENT_OUTPUT(VEC4, "revealageAccum"), - [2] = FRAGMENT_OUTPUT(UINT, "objectId"), - }, - .fragment_source = "workbench_effect_cavity_frag.glsl", - .additional_descriptors = - { - &workbench_material, - }, - }) +GPU_SHADER_DESCRIPTOR(workbench_transparent_accum) +{ -GPU_SHADER_DESCRIPTOR(workbench_opaque, - { - .fragment_outputs = - { - /* Note: Blending will be skipped on objectId because output is a - non-normalized integer buffer. */ - [0] = FRAGMENT_OUTPUT(VEC4, "materialData"), - [1] = FRAGMENT_OUTPUT(VEC2, "normalData"), - [2] = FRAGMENT_OUTPUT(UINT, "objectId"), - }, - .resources = - { - [DESCRIPTOR_SET_0] = - { - [4] = UNIFORM_BUFFER("WB_Scene", "scene"), - }, - }, - .fragment_source = "workbench_effect_cavity_frag.glsl", - .additional_descriptors = - { - &workbench_material, - }, - }) + .fragment_outputs = + { + /* Note: Blending will be skipped on objectId because output is a + non-normalized integer buffer. */ + [0] = FRAGMENT_OUTPUT(VEC4, "transparentAccum"), + [1] = FRAGMENT_OUTPUT(VEC4, "revealageAccum"), + [2] = FRAGMENT_OUTPUT(UINT, "objectId"), + }, + .fragment_source = "workbench_effect_cavity_frag.glsl", + .additional_descriptors = + { + "workbench_material", + }, +}; + +GPU_SHADER_DESCRIPTOR(workbench_opaque) +{ + + .fragment_outputs = + { + /* Note: Blending will be skipped on objectId because output is a + non-normalized integer buffer. */ + [0] = FRAGMENT_OUTPUT(VEC4, "materialData"), + [1] = FRAGMENT_OUTPUT(VEC2, "normalData"), + [2] = FRAGMENT_OUTPUT(UINT, "objectId"), + }, + .resources = + { + [DESCRIPTOR_SET_0] = + { + [4] = UNIFORM_BUFFER("WB_Scene", "scene"), + }, + }, + .fragment_source = "workbench_effect_cavity_frag.glsl", + .additional_descriptors = + { + "workbench_material", + }, +}; /** \} */ @@ -220,46 +212,48 @@ GPU_SHADER_DESCRIPTOR(workbench_opaque, * \{ */ #define WORKBENCH_SURFACETYPE_VARIATIONS(prefix, ...) \ - GPU_SHADER_DESCRIPTOR(prefix##_mesh, \ - { \ - .additional_descriptors = \ - { \ - &workbench_mesh, \ - __VA_ARGS__, \ - }, \ - }) \ - GPU_SHADER_DESCRIPTOR(prefix##_hair, \ - { \ - .additional_descriptors = \ - { \ - &workbench_hair, \ - __VA_ARGS__, \ - }, \ - }) \ - GPU_SHADER_DESCRIPTOR(prefix##_pointcloud, \ - { \ - .additional_descriptors = \ - { \ - &workbench_pointcloud, \ - __VA_ARGS__, \ - }, \ - }) + GPU_SHADER_DESCRIPTOR(prefix##_mesh) \ + { \ + .additional_descriptors = \ + { \ + "workbench_mesh", \ + __VA_ARGS__, \ + }, \ + }; \ + GPU_SHADER_DESCRIPTOR(prefix##_hair) \ + { \ + .additional_descriptors = \ + { \ + "workbench_hair", \ + __VA_ARGS__, \ + }, \ + }; \ + GPU_SHADER_DESCRIPTOR(prefix##_ptcloud) \ + { \ + .additional_descriptors = \ + { \ + "workbench_pointcloud", \ + __VA_ARGS__, \ + }, \ + }; #define WORKBENCH_PIPELINE_VARIATIONS(prefix, ...) \ WORKBENCH_SURFACETYPE_VARIATIONS(prefix##_transp_studio, \ - &workbench_transparent_accum, \ - &workbench_lighting_studio, \ + "workbench_transparent_accum", \ + "workbench_lighting_studio", \ __VA_ARGS__) \ WORKBENCH_SURFACETYPE_VARIATIONS(prefix##_transp_matcap, \ - &workbench_transparent_accum, \ - &workbench_lighting_matcap, \ + "workbench_transparent_accum", \ + "workbench_lighting_matcap", \ + __VA_ARGS__) \ + WORKBENCH_SURFACETYPE_VARIATIONS(prefix##_transp_flat, \ + "workbench_transparent_accum", \ + "workbench_lighting_flat", \ __VA_ARGS__) \ - WORKBENCH_SURFACETYPE_VARIATIONS( \ - prefix##_transp_flat, &workbench_transparent_accum, &workbench_lighting_flat, __VA_ARGS__) \ - WORKBENCH_SURFACETYPE_VARIATIONS(prefix##_opaque, &workbench_opaque, __VA_ARGS__) + WORKBENCH_SURFACETYPE_VARIATIONS(prefix##_opaque, "workbench_opaque", __VA_ARGS__) -WORKBENCH_PIPELINE_VARIATIONS(workbench_tex_none, &workbench_texture_none) -WORKBENCH_PIPELINE_VARIATIONS(workbench_tex_single, &workbench_texture_single) -WORKBENCH_PIPELINE_VARIATIONS(workbench_tex_tile, &workbench_texture_tile) +WORKBENCH_PIPELINE_VARIATIONS(workbench_tex_none, "workbench_texture_none") +WORKBENCH_PIPELINE_VARIATIONS(workbench_tex_single, "workbench_texture_single") +WORKBENCH_PIPELINE_VARIATIONS(workbench_tex_tile, "workbench_texture_tile") /** \} */ |