|
MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
|
Fluent assembler producing a ShaderSpec. More...
#include <ShaderSpec.hpp>
Collaboration diagram for MayaFlux::Portal::Graphics::ShaderSpec::Assemble:Public Member Functions | |
| Assemble ()=default | |
| ShaderSpec | build () |
| Finalise and return the ShaderSpec. | |
| Assemble & | kernel (KernelSource ks) |
| Supply a user kernel via MF_KERNEL. | |
| Assemble & | op (KernelOp o) |
| Set the named operation the emitter will lower to SPIR-V. | |
| Assemble & | pc (std::string name) |
| Declare a float push constant field. | |
| Assemble & | pc (std::string name, Kakshya::GpuDataFormat format) |
| Declare a push constant field with explicit format. | |
| Assemble & | ssbo (std::string name, BindingDirection direction, Kakshya::GpuDataFormat format, Kakshya::DataModality modality=Kakshya::DataModality::SCALAR_F32) |
| Declare an SSBO binding. | |
| Assemble & | start_binding (uint32_t n) |
| Assemble & | start_set (uint32_t s) |
| Assemble & | storage_image (std::string name, BindingDirection direction=BindingDirection::Output) |
| Declare a storage image binding (image2D). | |
| Assemble & | texture (std::string name) |
| Declare a sampled image binding (sampler2D). | |
| Assemble & | tmpl (KernelTemplate t) |
| Set the kernel template. | |
| Assemble & | workgroup (uint32_t x, uint32_t y=1, uint32_t z=1) |
| Override workgroup size. | |
Private Attributes | |
| std::vector< BindingSlot > | m_bindings |
| std::optional< KernelSource > | m_kernel |
| uint32_t | m_next_binding { 0 } |
| KernelOp | m_op { KernelOp::Scale } |
| std::vector< PushConstantField > | m_pc_fields |
| uint32_t | m_set { 0 } |
| KernelTemplate | m_tmpl { KernelTemplate::Elementwise } |
| std::array< uint32_t, 3 > | m_workgroup { 256, 1, 1 } |
Fluent assembler producing a ShaderSpec.
Binding indices are assigned in declaration order starting at 1.
Definition at line 345 of file ShaderSpec.hpp.