Public Member Functions | Protected Member Functions | List of all members
ComputeShader Class Reference

#include <shader.h>

Public Member Functions

 ComputeShader (Core &core)
 ~ComputeShader ()
VkShaderModule getComputeModule () const
glm::u32vec3 getWorkGroupSize () const
const std::vector< int > & getWorkGroupSizeConstantIds () const
- Public Member Functions inherited from BaseShader
 BaseShader (Core &core)
virtual ~BaseShader ()
const SamplerDeclarationsgetSamplerDeclarations () const
const std::vector< BufferObjectDeclaration > & getUBODeclarations () const
const std::vector< BufferObjectDeclaration > & getSSBODeclarations () const
const std::string & getDisplayName () const
VkDescriptorSetLayout getDescriptorSetLayout () const
void clear ()
- Public Member Functions inherited from Resource
 Resource ()
- Public Member Functions inherited from Object
 Object ()
virtual ~Object ()
virtual bool init (utility::ErrorState &errorState)
virtual void onDestroy ()
 Object (Object &)=delete
Objectoperator= (const Object &)=delete
 Object (Object &&)=delete
Objectoperator= (Object &&)=delete

Protected Member Functions

virtual bool load (const std::string &displayName, const char *compShader, int compSize, utility::ErrorState &errorState)
- Protected Member Functions inherited from BaseShader
bool initLayout (VkDevice device, nap::utility::ErrorState &errorState)
bool verifyShaderVariableDeclarations (utility::ErrorState &errorState)

Additional Inherited Members

- Static Public Member Functions inherited from Object
static bool isIDProperty (rtti::Instance &object, const rtti::Property &property)
- Public Attributes inherited from Object
std::string mID
 Property: 'mID' unique name of the object. Used as an identifier by the system. More...
- Protected Attributes inherited from BaseShader
RenderServicemRenderService = nullptr
 Handle to render engine. More...
std::string mDisplayName
 Filename of shader used as display name. More...
BufferObjectDeclarationList mUBODeclarations
 All uniform buffer object declarations. More...
BufferObjectDeclarationList mSSBODeclarations
 All storage buffer object declarations. More...
SamplerDeclarations mSamplerDeclarations
 All sampler declarations. More...
VkDescriptorSetLayout mDescriptorSetLayout = VK_NULL_HANDLE
 Descriptor set layout. More...


Cross-Compiles GLSL vertex and fragment shader code to SPIR-V and creates a Vulkan shader module. All uniforms, samplers and attributes are extracted. Make sure to call init() on initialization of a derived shader class. A nap::Material links to a BaseShader. The shader is compiled on initialization. Use a nap::ComputeMaterial or nap::ComputeMaterialInstance to set / override uniforms and samplers.

Inheritance diagram for ComputeShader:
Collaboration diagram for ComputeShader:

Constructor & Destructor Documentation

◆ ComputeShader()

ComputeShader ( Core core)

◆ ~ComputeShader()

Member Function Documentation

◆ getComputeModule()

VkShaderModule getComputeModule ( ) const
Vulkan vertex module.

◆ getWorkGroupSize()

glm::u32vec3 getWorkGroupSize ( ) const
local work group size

◆ getWorkGroupSizeConstantIds()

const std::vector<int>& getWorkGroupSizeConstantIds ( ) const

Workgroup specialization constant IDs. When a workgroup size specialization constant is detected, NAP automatically overwrites it with the maximum group size of the device on pipeline creation. Entries with the value -1 have no associated specialization constant defined in the compute shader.

a vector of work group size specialization constant IDs

◆ load()

virtual bool load ( const std::string &  displayName,
const char *  compShader,
int  compSize,
utility::ErrorState errorState 

Compiles the GLSL shader code, creates the shader module and parses all the uniforms and samplers. Call this in a derived class on initialization.

displayNamethe name of the shader
compShaderthe fragment shader GLSL code.
compSizetotal number of characters in compShader.
errorStatecontains the error if initialization fails.
if initialization succeeded.