![]() |
Divide Framework 0.1
A free and open-source 3D Framework under heavy development
|
#include <NonePlaceholderObjects.h>
Public Member Functions | |
noShaderProgram (PlatformContext &context, const ResourceDescriptor< ShaderProgram > &descriptor) | |
![]() | |
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 |
Additional Inherited Members | |
![]() | |
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 } |
![]() | |
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 |
![]() | |
static constexpr const char * | UNIFORM_BLOCK_NAME = "dvd_uniforms" |
static U8 | k_commandBufferID = U8_MAX - MAX_BINDINGS_PER_DESCRIPTOR_SET |
static Mutex | g_cacheLock |
![]() | |
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 | |
![]() | |
static bool | SaveToCache (LoadData::ShaderCacheType cache, const LoadData &dataIn, const eastl::set< U64 > &atomIDsIn) |
static bool | LoadFromCache (LoadData::ShaderCacheType cache, LoadData &dataInOut, eastl::set< U64 > &atomIDsOut) |
static void | OnThreadCreated (const GFXDevice &gfx, const std::thread::id &threadID, bool isMainRenderThread) |
![]() | |
const ShaderProgramDescriptor | _descriptor |
vector< UniformBlockUploader > | _uniformBlockBuffers |
eastl::set< U64 > | _usedAtomIDs |
![]() | |
Mutex | _callbackLock {} |
![]() | |
std::atomic< ResourceState > | _resourceState |
![]() | |
const I64 | _guid |
![]() | |
GFXDevice & | _context |
![]() | |
static ShaderQueue | s_recompileQueue |
static ShaderQueue | s_recompileFailedQueue |
static ShaderProgramMap | s_shaderPrograms |
Shader program cache. | |
static eastl::fixed_vector< ShaderProgram *, U16_MAX, false > | s_usedShaderPrograms |
static LastRequestedShader | s_lastRequestedShaderProgram = {} |
static SharedMutex | s_programLock |
static std::atomic_int | s_shaderCount |
static I64 | s_shaderFileWatcherID = -1 |
static Mutex | s_atomLock |
Shaders loaded from files are kept as atoms. | |
static AtomMap | s_atoms |
static AtomInclusionMap | s_atomIncludes |
static ResourcePath | shaderAtomLocationPrefix [to_base(ShaderType::COUNT)+1] |
static Str< 8 > | shaderAtomExtensionName [to_base(ShaderType::COUNT)+1] |
static U64 | shaderAtomExtensionHash [to_base(ShaderType::COUNT)+1] |
static BindingSetData | s_bindingsPerSet |
Definition at line 81 of file NonePlaceholderObjects.h.
|
inline |
Definition at line 83 of file NonePlaceholderObjects.h.