![]() |
Divide Framework 0.1
A free and open-source 3D Framework under heavy development
|
OpenGL implementation of the ShaderProgram entity. More...
#include <glShaderProgram.h>
Public Types | |
using | glShaders = eastl::fixed_vector< glShaderEntry, to_base(ShaderType::COUNT), false > |
![]() | |
using | RenderTargets = std::array< bool, to_base(RTColourAttachmentSlot::COUNT)> |
using | ShaderLoadData = std::array< LoadData, to_base(ShaderType::COUNT)> |
using | ShaderProgramMap = eastl::fixed_vector< ShaderProgram *, U16_MAX, true > |
using | AtomMap = hashMap< U64, string > |
using | AtomInclusionMap = hashMap< U64, eastl::set< U64 > > |
using | ShaderQueue = eastl::stack< ShaderQueueEntry, vector< ShaderQueueEntry > > |
using | BindingsPerSetArray = std::array< BindingsPerSet, MAX_BINDINGS_PER_DESCRIPTOR_SET > |
using | SetUsageData = std::array< bool, to_base(DescriptorSetUsage::COUNT)> |
using | BindingSetData = std::array< BindingsPerSetArray, to_base(DescriptorSetUsage::COUNT)> |
![]() | |
enum class | Type : U8 { RENDER_TARGET , SHADER_BUFFER , BUFFER , SHADER , SHADER_PROGRAM , TEXTURE , COUNT } |
Public Member Functions | |
glShaderProgram (PlatformContext &context, const ResourceDescriptor< ShaderProgram > &descriptor) | |
~glShaderProgram () override | |
bool | unload () override |
Make sure this program is ready for deletion. | |
![]() | |
ShaderProgram (PlatformContext &context, const ResourceDescriptor< ShaderProgram > &descriptor) | |
~ShaderProgram () override | |
bool | load (PlatformContext &context) override |
Loading and unloading interface. | |
bool | postLoad () override |
bool | unload () override |
bool | recompile () |
bool | recompile (bool &skipped) |
Rebuild the specified shader stages from source code. | |
virtual ShaderResult | validatePreBind (bool rebind=true) |
bool | uploadUniformData (const UniformData &data, DescriptorSet &set, GFX::MemoryBarrierCommand &memCmdInOut) |
const ShaderProgramDescriptor & | descriptor () const noexcept |
PROPERTY_RW (bool, highPriority, true) | |
PROPERTY_RW (bool, useShaderCache, true) | |
PROPERTY_R_IW (BindingsPerSetArray, perDrawDescriptorSetLayout) | |
PROPERTY_R_IW (RenderTargets, fragmentOutputs) | |
PROPERTY_R_IW (SetUsageData, setUsage) | |
![]() | |
CachedResource (const ResourceDescriptorBase &descriptor, std::string_view typeName) | |
virtual bool | load (PlatformContext &context) |
Loading and unloading interface. | |
virtual bool | postLoad () |
virtual bool | unload () |
void | setState (ResourceState currentState) final |
![]() | |
Resource (std::string_view resourceName, std::string_view typeName) | |
ResourceState | getState () const noexcept |
PROPERTY_R (Str< 32 >, typeName) | |
PROPERTY_R (Str< 256 >, resourceName) | |
![]() | |
GUIDWrapper () noexcept | |
GUIDWrapper (const GUIDWrapper &old) noexcept | |
GUIDWrapper (GUIDWrapper &&old) noexcept | |
virtual | ~GUIDWrapper ()=default |
FORCE_INLINE I64 | getGUID () const noexcept |
GUIDWrapper & | operator= (const GUIDWrapper &old)=delete |
GUIDWrapper & | operator= (GUIDWrapper &&other)=delete |
![]() | |
virtual | ~GraphicsResource () |
GFXDevice & | context () const noexcept |
U64 | nameHash () const noexcept |
![]() | |
NonCopyable (const NonCopyable &)=delete | |
NonCopyable & | operator= (const NonCopyable &)=delete |
NonCopyable (NonCopyable &&)=default | |
NonCopyable & | operator= (NonCopyable &&)=default |
![]() | |
NonMovable (NonMovable &&)=delete | |
NonMovable & | operator= (NonMovable &&)=delete |
NonMovable (const NonMovable &)=default | |
NonMovable & | operator= (const NonMovable &)=default |
Static Public Member Functions | |
static void | Idle (PlatformContext &platformContext) |
![]() | |
static void | Idle (PlatformContext &platformContext, bool fast) |
static void | InitStaticData () |
static void | DestroyStaticData () |
static ErrorCode | OnStartup (PlatformContext &context) |
static bool | OnShutdown () |
static void | OnBeginFrame (GFXDevice &gfx) |
static void | OnEndFrame (GFXDevice &gfx) |
static bool | RecompileShaderProgram (const std::string_view name) |
Queue a shaderProgram recompile request. | |
static bool | UnregisterShaderProgram (ShaderProgram *shaderProgram) |
Remove a shaderProgram from the program cache. | |
static void | RegisterShaderProgram (ShaderProgram *shaderProgram) |
Add a shaderProgram to the program cache. | |
static void | RebuildAllShaders () |
static vector< ResourcePath > | GetAllAtomLocations () |
static I32 | ShaderProgramCount () noexcept |
static void | OnAtomChange (std::string_view atomName, FileUpdateEvent evt) |
static U8 | GetGLBindingForDescriptorSlot (DescriptorSetUsage usage, U8 slot) noexcept |
static std::pair< DescriptorSetUsage, U8 > | GetDescriptorSlotForGLBinding (U8 binding, DescriptorSetBindingType type) noexcept |
static BindingSetData & | GetBindingSetData () noexcept |
static void | RegisterSetLayoutBinding (DescriptorSetUsage usage, U8 slot, DescriptorSetBindingType type, ShaderStageVisibility visibility) |
static ErrorCode | SubmitSetLayouts (GFXDevice &gfx) |
static U32 | GetBindingCount (DescriptorSetUsage usage, DescriptorSetBindingType type) |
![]() | |
static I64 | generateGUID () noexcept |
Protected Member Functions | |
ShaderResult | validatePreBind (bool rebind=true) override |
void | processValidation () |
bool | loadInternal (hashMap< U64, PerFileShaderData > &fileData, bool overwrite) override |
Returns true if at least one shader linked successfully. | |
ShaderResult | bind () |
Bind this shader program (returns false if the program failed validation) | |
void | uploadPushConstants (const PushConstantsStruct &pushConstants) |
![]() | |
virtual bool | loadInternal (hashMap< U64, PerFileShaderData > &fileData, bool overwrite) |
bool | loadSourceCode (const ModuleDefines &defines, bool reloadExisting, LoadData &loadDataInOut, Reflection::UniformsSet &previousUniformsInOut, U8 &blockIndexInOut) |
void | loadAndParseGLSL (const ModuleDefines &defines, LoadData &loadDataInOut, Reflection::UniformsSet &previousUniformsInOut, U8 &blockIndexInOut, eastl::set< U64 > &atomIDsInOut) |
void | initDrawDescriptorSetLayout (const PerFileShaderData &loadData) |
void | initUniformUploader (const PerFileShaderData &loadData) |
![]() | |
PROPERTY_RW (ResourcePath, assetLocation) | |
PROPERTY_RW (Str< 256 >, assetName) | |
PROPERTY_R (size_t, descriptorHash) | |
virtual void | setState (ResourceState currentState) |
![]() | |
GraphicsResource (GFXDevice &context, Type type, I64 GUID, U64 nameHash) | |
![]() | |
NonCopyable ()=default | |
~NonCopyable ()=default | |
![]() | |
NonMovable ()=default | |
~NonMovable ()=default | |
Private Attributes | |
gl46core::GLuint | _glHandle = GL_NULL_HANDLE |
bool | _validationQueued = false |
bool | _stagesBound = false |
glShaders | _shaderStage |
Friends | |
class | Attorney::GLAPIShaderProgram |
OpenGL implementation of the ShaderProgram entity.
Definition at line 58 of file glShaderProgram.h.
using Divide::glShaderProgram::glShaders = eastl::fixed_vector<glShaderEntry, to_base( ShaderType::COUNT ), false> |
Definition at line 61 of file glShaderProgram.h.
|
explicit |
Definition at line 88 of file glShaderProgram.cpp.
|
override |
Definition at line 93 of file glShaderProgram.cpp.
|
protected |
Bind this shader program (returns false if the program failed validation)
Bind this shader program.
Definition at line 246 of file glShaderProgram.cpp.
|
static |
Definition at line 23 of file glShaderProgram.cpp.
|
overrideprotectedvirtual |
Returns true if at least one shader linked successfully.
Reimplemented from Divide::ShaderProgram.
Definition at line 209 of file glShaderProgram.cpp.
|
protected |
Definition at line 128 of file glShaderProgram.cpp.
|
overridevirtual |
Make sure this program is ready for deletion.
Reimplemented from Divide::CachedResource.
Definition at line 97 of file glShaderProgram.cpp.
|
protected |
Definition at line 267 of file glShaderProgram.cpp.
|
overrideprotectedvirtual |
Reimplemented from Divide::ShaderProgram.
Definition at line 157 of file glShaderProgram.cpp.
|
friend |
Definition at line 59 of file glShaderProgram.h.
|
private |
Definition at line 86 of file glShaderProgram.h.
|
private |
Definition at line 90 of file glShaderProgram.h.
|
private |
Definition at line 89 of file glShaderProgram.h.
|
private |
Definition at line 88 of file glShaderProgram.h.