Nebula
Loading...
Searching...
No Matches
vkshader.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
9//------------------------------------------------------------------------------
10#include "core/refcounted.h"
11#include "util/tupleutility.h"
12#include "coregraphics/shader.h"
15#include "vkshaderprogram.h"
16
17namespace Vulkan
18{
19
20const VkProgramReflectionInfo& ShaderGetProgramReflection(const CoreGraphics::ShaderProgramId shaderProgramId);
21
22void ShaderSetup(
23 VkDevice dev,
24 const Util::StringAtom& name,
25 GPULang::Loader* loader,
27 Util::Set<CoreGraphics::SamplerId>& immutableSamplers,
33);
35void ShaderCleanup(
36 VkDevice dev,
37 Util::Set<CoreGraphics::SamplerId>& immutableSamplers,
41);
42
44static Util::String VkShaderCreateSignature(const VkDescriptorSetLayoutBinding& bind);
45
49
50
52{
53 VkDescriptorSet set;
54 VkPipelineLayout layout;
56};
57
59{
60 uint32_t index;
61 uint32_t offset;
62};
63
71
88
114
115enum
116{
121};
122
124typedef Ids::IdAllocator<
125 VkReflectionInfo,
126 VkShaderSetupInfo, //1 setup immutable values
127 VkShaderRuntimeInfo, //2 runtime values
130
132
133} // namespace Vulkan
IndexT Code
binary code for a ModelNodeType
Definition shaderidentifier.h:38
An ID allocator associates an id with a slice in an N number of arrays.
Definition idallocator.h:39
Nebula's dynamic array class.
Definition array.h:60
A collection of key/value pairs with quick value retrieval by key at roughly O(log n).
Definition dictionary.h:34
Implements a fixed size one-dimensional array.
Definition fixedarray.h:20
A collection of unique values with quick lookup.
Definition set.h:34
A StringAtom.
Definition stringatom.h:22
Util::StringAtom ResourceName
Definition resourceid.h:33
std::pair< A, B > Pair
Wrap std::pair.
Definition tupleutility.h:47
Vulkan implementation of GPU acceleration structure.
Definition vkaccelerationstructure.cc:15
Util::String VkShaderCreateSignature(const VkDescriptorSetLayoutBinding &bind)
create descriptor layout signature
Definition vkshader.cc:647
void ShaderCleanup(VkDevice dev, Util::Set< CoreGraphics::SamplerId > &immutableSamplers, Util::FixedArray< Util::Pair< uint32_t, CoreGraphics::ResourceTableLayoutId > > &setLayouts, Util::Dictionary< Util::StringAtom, CoreGraphics::BufferId > &buffers, CoreGraphics::ResourcePipelineId &pipelineLayout)
cleanup shader
Definition vkshader.cc:612
Util::Dictionary< CoreGraphics::ShaderFeature::Mask, CoreGraphics::ShaderProgramId > ProgramMap
Definition vkshader.h:66
@ Shader_SetupInfo
Definition vkshader.h:118
@ Shader_RuntimeInfo
Definition vkshader.h:119
@ Shader_Programs
Definition vkshader.h:120
@ Shader_ReflectionInfo
Definition vkshader.h:117
void ShaderSetup(VkDevice dev, const Util::StringAtom &name, GPULang::Loader *loader, Util::FixedArray< CoreGraphics::ResourcePipelinePushConstantRange > &constantRange, Util::Set< CoreGraphics::SamplerId > &immutableSamplers, Util::FixedArray< Util::Pair< uint32_t, CoreGraphics::ResourceTableLayoutId > > &setLayouts, Util::Dictionary< uint32_t, uint32_t > &setLayoutMap, CoreGraphics::ResourcePipelineId &pipelineLayout, Util::Dictionary< Util::StringAtom, uint32_t > &resourceSlotMapping, Util::Dictionary< Util::StringAtom, IndexT > &constantBindings)
Definition vkshader.cc:209
Ids::IdAllocator< VkReflectionInfo, VkShaderSetupInfo, VkShaderRuntimeInfo, Util::Array< CoreGraphics::ShaderProgramId > > ShaderAllocator
this member allocates shaders
Definition vkshader.h:129
Util::Dictionary< Util::StringAtom, VkDescriptorSetLayout > VkShaderLayoutCache
Definition vkshader.cc:17
Util::Dictionary< Util::StringAtom, VkDescriptorSet > VkShaderDescriptorSetCache
Definition vkshader.cc:19
const VkProgramReflectionInfo & ShaderGetProgramReflection(const CoreGraphics::ShaderProgramId shaderProgramId)
Use direct resource ids, not the State, Shader or Variable type ids.
Definition vkshader.cc:657
Util::Dictionary< uint32_t, Util::Array< CoreGraphics::BufferId > > UniformBufferGroupMap
Definition vkshader.h:65
Util::Dictionary< Util::StringAtom, VkPipelineLayout > VkShaderPipelineCache
Definition vkshader.cc:18
Util::Dictionary< Util::StringAtom, CoreGraphics::BufferId > UniformBufferMap
Definition vkshader.h:64
ShaderAllocator shaderAlloc
Definition vkshader.cc:20
A resource table declares a list of resources (ResourceTable in DX12, DescriptorSet in Vulkan)
Samplers.
A shader represents an entire shader resource, containing several stages and programs.
Definition resourcetable.h:399
Nebula's universal string class.
Definition String.cs:8
Definition vkshader.h:59
uint32_t offset
Definition vkshader.h:61
uint32_t index
Definition vkshader.h:60
Definition vkshader.h:52
VkPipelineLayout layout
Definition vkshader.h:54
IndexT slot
Definition vkshader.h:55
VkDescriptorSet set
Definition vkshader.h:53
Definition vkshaderprogram.h:53
Util::StringAtom name
Definition vkshader.h:96
uint32_t set
Definition vkshader.h:93
uint32_t byteSize
Definition vkshader.h:95
uint32_t binding
Definition vkshader.h:94
Definition vkshader.h:103
uint32_t blockBinding
Definition vkshader.h:107
uint32_t blockSet
Definition vkshader.h:106
Util::StringAtom name
Definition vkshader.h:104
Util::StringAtom blockName
Definition vkshader.h:105
Definition vkshader.h:90
Util::Dictionary< Util::StringAtom, UniformBuffer > uniformBuffersByName
Definition vkshader.h:99
Util::Array< Variable > variables
Definition vkshader.h:110
Util::Array< Util::Array< UniformBuffer > > uniformBuffersPerSet
Definition vkshader.h:98
Util::Array< uint64_t > uniformBuffersMask
Definition vkshader.h:112
Util::Array< UniformBuffer > uniformBuffers
Definition vkshader.h:100
Util::Dictionary< Util::StringAtom, Variable > variablesByName
Definition vkshader.h:109
Definition vkshader.h:68
ProgramMap programMap
Definition vkshader.h:69
Definition vkshader.h:73
Util::FixedArray< Util::Pair< uint32_t, CoreGraphics::ResourceTableLayoutId > > descriptorSetLayouts
Definition vkshader.h:85
Util::Set< CoreGraphics::SamplerId > immutableSamplers
Definition vkshader.h:82
UniformBufferMap uniformBufferMap
Definition vkshader.h:77
CoreGraphics::ResourcePipelineId pipelineLayout
Definition vkshader.h:80
Util::Dictionary< Util::StringAtom, uint32_t > resourceIndexMap
Definition vkshader.h:83
CoreGraphics::ShaderIdentifier::Code id
Definition vkshader.h:76
UniformBufferGroupMap uniformBufferGroupMap
Definition vkshader.h:78
Util::FixedArray< CoreGraphics::ResourcePipelinePushConstantRange > constantRangeLayout
Definition vkshader.h:81
Util::Dictionary< uint32_t, uint32_t > descriptorSetLayoutMap
Definition vkshader.h:86
Resources::ResourceName name
Definition vkshader.h:75
Util::Dictionary< Util::StringAtom, IndexT > constantBindings
Definition vkshader.h:84
VkDevice dev
Definition vkshader.h:74
int IndexT
Definition types.h:41