#include <shader.h>
Public Types | |
enum | EShaderType : uint { Vertex = 0x01, Fragment = 0x02 } |
using | ShaderTypeFlags = uint |
Public Member Functions | |
Shader (Core &core) | |
~Shader () | |
const VertexAttributeDeclarations & | getAttributes () const |
VkShaderModule | getVertexModule () const |
VkShaderModule | getFragmentModule () const |
![]() | |
BaseShader (Core &core) | |
virtual | ~BaseShader () |
const SamplerDeclarations & | getSamplerDeclarations () const |
const std::vector< BufferObjectDeclaration > & | getUBODeclarations () const |
const std::vector< BufferObjectDeclaration > & | getSSBODeclarations () const |
const ShaderConstantDeclarations & | getConstantDeclarations () const |
const std::string & | getDisplayName () const |
VkDescriptorSetLayout | getDescriptorSetLayout () const |
void | clear () |
![]() | |
Resource () | |
![]() | |
Object () | |
virtual | ~Object () |
virtual bool | init (utility::ErrorState &errorState) |
virtual void | onDestroy () |
Object (Object &)=delete | |
Object & | operator= (const Object &)=delete |
Object (Object &&)=delete | |
Object & | operator= (Object &&)=delete |
Protected Member Functions | |
bool | load (const std::string &displayName, const std::vector< std::string > &searchPaths, const char *vertShader, int vertSize, const char *fragShader, int fragSize, utility::ErrorState &errorState) |
bool | loadDefault (const std::string &displayName, utility::ErrorState &errorState) |
![]() | |
bool | initLayout (VkDevice device, nap::utility::ErrorState &errorState) |
bool | verifyShaderVariableDeclarations (utility::ErrorState &errorState) |
Additional Inherited Members | |
![]() | |
static bool | isIDProperty (rtti::Instance &object, const rtti::Property &property) |
![]() | |
std::string | mID |
Property: 'mID' unique name of the object. Used as an identifier by the system. More... | |
![]() | |
RenderService * | mRenderService = 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... | |
ShaderConstantDeclarations | mConstantDeclarations |
All shader constant 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::Material or nap::MaterialInstance to set / override uniforms and samplers.
using ShaderTypeFlags = uint |
enum EShaderType : uint |
Shader type flag bits
Enumerator | |
---|---|
Vertex | |
Fragment |
~Shader | ( | ) |
const VertexAttributeDeclarations& getAttributes | ( | ) | const |
VkShaderModule getFragmentModule | ( | ) | const |
VkShaderModule getVertexModule | ( | ) | const |
|
protected |
Compiles the GLSL shader code, creates the shader module and parses all the uniforms and samplers. Call this in a derived class on initialization.
displayName | the name of the shader. |
searchPaths | the search paths of the shader. |
vertShader | the vertex shader GLSL code. |
vertSize | total number of characters in vertShader. |
fragShader | the fragment shader GLSL code. |
fragSize | total number of characters in fragShader. |
errorState | contains the error if initialization fails. |
|
protected |
Loads a NAP default shader from disk. Compiles the GLSL shader code, creates the shader module and parses all the uniforms and samplers. Call this in a derived class on initialization.
displayName | the name of the NAP default shader. |
errorState | contains the error if initialization fails. |