Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::noShaderProgram Class Referencefinal

#include <NonePlaceholderObjects.h>

+ Inheritance diagram for Divide::noShaderProgram:

Public Member Functions

 noShaderProgram (PlatformContext &context, const ResourceDescriptor< ShaderProgram > &descriptor)
 
- Public Member Functions inherited from Divide::ShaderProgram
 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 ShaderProgramDescriptordescriptor () 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)
 
- Public Member Functions inherited from Divide::CachedResource
 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
 
- Public Member Functions inherited from Divide::Resource
 Resource (std::string_view resourceName, std::string_view typeName)
 
ResourceState getState () const noexcept
 
 PROPERTY_R (Str< 32 >, typeName)
 
 PROPERTY_R (Str< 256 >, resourceName)
 
- Public Member Functions inherited from Divide::GUIDWrapper
 GUIDWrapper () noexcept
 
 GUIDWrapper (const GUIDWrapper &old) noexcept
 
 GUIDWrapper (GUIDWrapper &&old) noexcept
 
virtual ~GUIDWrapper ()=default
 
FORCE_INLINE I64 getGUID () const noexcept
 
GUIDWrapperoperator= (const GUIDWrapper &old)=delete
 
GUIDWrapperoperator= (GUIDWrapper &&other)=delete
 
- Public Member Functions inherited from Divide::GraphicsResource
virtual ~GraphicsResource ()
 
GFXDevicecontext () const noexcept
 
U64 nameHash () const noexcept
 
- Public Member Functions inherited from Divide::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=default
 
NonCopyableoperator= (NonCopyable &&)=default
 
- Public Member Functions inherited from Divide::NonMovable
 NonMovable (NonMovable &&)=delete
 
NonMovableoperator= (NonMovable &&)=delete
 
 NonMovable (const NonMovable &)=default
 
NonMovableoperator= (const NonMovable &)=default
 

Additional Inherited Members

- Public Types inherited from Divide::ShaderProgram
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)>
 
- Public Types inherited from Divide::GraphicsResource
enum class  Type : U8 {
  RENDER_TARGET , SHADER_BUFFER , BUFFER , SHADER ,
  SHADER_PROGRAM , TEXTURE , COUNT
}
 
- Static Public Member Functions inherited from Divide::ShaderProgram
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< ResourcePathGetAllAtomLocations ()
 
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, U8GetDescriptorSlotForGLBinding (U8 binding, DescriptorSetBindingType type) noexcept
 
static BindingSetDataGetBindingSetData () 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 Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 
- Static Public Attributes inherited from Divide::ShaderProgram
static constexpr const char * UNIFORM_BLOCK_NAME = "dvd_uniforms"
 
static U8 k_commandBufferID = U8_MAX - MAX_BINDINGS_PER_DESCRIPTOR_SET
 
static Mutex g_cacheLock
 
- Protected Member Functions inherited from Divide::ShaderProgram
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)
 
- Protected Member Functions inherited from Divide::CachedResource
 PROPERTY_RW (ResourcePath, assetLocation)
 
 PROPERTY_RW (Str< 256 >, assetName)
 
 PROPERTY_R (size_t, descriptorHash)
 
virtual void setState (ResourceState currentState)
 
- Protected Member Functions inherited from Divide::GraphicsResource
 GraphicsResource (GFXDevice &context, Type type, I64 GUID, U64 nameHash)
 
- Protected Member Functions inherited from Divide::NonCopyable
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 
- Protected Member Functions inherited from Divide::NonMovable
 NonMovable ()=default
 
 ~NonMovable ()=default
 
- Static Protected Member Functions inherited from Divide::ShaderProgram
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)
 
- Protected Attributes inherited from Divide::ShaderProgram
const ShaderProgramDescriptor _descriptor
 
vector< UniformBlockUploader_uniformBlockBuffers
 
eastl::set< U64_usedAtomIDs
 
- Protected Attributes inherited from Divide::CachedResource
Mutex _callbackLock {}
 
- Protected Attributes inherited from Divide::Resource
std::atomic< ResourceState_resourceState
 
- Protected Attributes inherited from Divide::GUIDWrapper
const I64 _guid
 
- Protected Attributes inherited from Divide::GraphicsResource
GFXDevice_context
 
- Static Protected Attributes inherited from Divide::ShaderProgram
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
 

Detailed Description

Definition at line 81 of file NonePlaceholderObjects.h.

Constructor & Destructor Documentation

◆ noShaderProgram()

Divide::noShaderProgram::noShaderProgram ( PlatformContext context,
const ResourceDescriptor< ShaderProgram > &  descriptor 
)
inline

Definition at line 83 of file NonePlaceholderObjects.h.


The documentation for this class was generated from the following file: