![]() |
Divide Framework 0.1
A free and open-source 3D Framework under heavy development
|
#include <glShader.h>
Public Member Functions | |
glShader (GFXDevice &context, const std::string_view name, const U32 generation) | |
~glShader () override | |
bool | load (const ShaderProgram::ShaderLoadData &data) |
PROPERTY_R_IW (gl46core::UseProgramStageMask, stageMask, gl46core::UseProgramStageMask::GL_NONE_BIT) | |
PROPERTY_R_IW (gl46core::GLuint, handle, GL_NULL_HANDLE) | |
![]() | |
ShaderModule (GFXDevice &context, const std::string_view name, U32 generation) | |
virtual | ~ShaderModule () override |
void | registerParent (ShaderProgram *parent) |
void | deregisterParent (ShaderProgram *parent) |
PROPERTY_R (Str< 256 >, name) | |
PROPERTY_R (bool, valid, false) | |
PROPERTY_R (bool, inUse, true) | |
PROPERTY_R (U32, generation, 0u) | |
PROPERTY_R (U64, lastUsedFrame, U64_MAX - MAX_FRAME_LIFETIME - 1u) | |
![]() | |
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 glShaderEntry | LoadShader (GFXDevice &context, glShaderProgram *parent, const std::string_view name, U32 targetGeneration, ShaderProgram::ShaderLoadData &data) |
Add or refresh a shader from the cache. | |
![]() | |
static ShaderModule * | GetShader (const std::string_view name) |
Returns a reference to an already loaded shader, null otherwise. | |
static void | Idle (bool fast) |
static void | InitStaticData () |
static void | DestroyStaticData () |
![]() | |
static I64 | generateGUID () noexcept |
Private Member Functions | |
ShaderResult | uploadToGPU () |
void | onParentValidation () |
void | uploadPushConstants (const PushConstantsStruct &pushConstants) |
Private Attributes | |
ShaderProgram::ShaderLoadData | _loadData |
vector< gl46core::GLuint > | _shaderIDs |
bool | _linked = false |
gl46core::GLint | _pushConstantsLocation {-2} |
Friends | |
class | glShaderProgram |
Additional Inherited Members | |
![]() | |
enum class | Type : U8 { RENDER_TARGET , SHADER_BUFFER , BUFFER , SHADER , SHADER_PROGRAM , TEXTURE , COUNT } |
![]() | |
using | ShaderMap = hashMap< U64, ShaderModule_uptr > |
![]() | |
GraphicsResource (GFXDevice &context, Type type, I64 GUID, U64 nameHash) | |
![]() | |
NonCopyable ()=default | |
~NonCopyable ()=default | |
![]() | |
NonMovable ()=default | |
~NonMovable ()=default | |
![]() | |
static ShaderModule * | GetShaderLocked (const std::string_view name) |
![]() | |
Mutex | _parentLock |
eastl::fixed_vector< ShaderProgram *, 4, true > | _parents |
![]() | |
const I64 | _guid |
![]() | |
GFXDevice & | _context |
![]() | |
static constexpr U32 | MAX_FRAME_LIFETIME = Config::TARGET_FRAME_RATE * 10 |
static std::atomic_bool | s_modulesRemoved |
Shader cache. | |
static ShaderMap | s_shaderNameMap |
static SharedMutex | s_shaderNameLock |
glShader represents one of a program's rendering stages (vertex, geometry, fragment, etc) It can be used simultaneously in multiple programs/pipelines
Definition at line 58 of file glShader.h.
|
explicit |
The shader's name is the period-separated list of properties, type is the render stage this shader is used for
Definition at line 50 of file glShader.cpp.
|
override |
Definition at line 55 of file glShader.cpp.
bool Divide::glShader::load | ( | const ShaderProgram::ShaderLoadData & | data | ) |
Definition at line 284 of file glShader.cpp.
|
static |
Add or refresh a shader from the cache.
Load a shader by name, source code and stage.
Definition at line 320 of file glShader.cpp.
|
private |
Definition at line 357 of file glShader.cpp.
Divide::glShader::PROPERTY_R_IW | ( | gl46core::GLuint | , |
handle | , | ||
GL_NULL_HANDLE | |||
) |
Divide::glShader::PROPERTY_R_IW | ( | gl46core::UseProgramStageMask | , |
stageMask | , | ||
gl46core::UseProgramStageMask::GL_NONE_BIT | |||
) |
|
private |
Definition at line 371 of file glShader.cpp.
|
private |
Definition at line 67 of file glShader.cpp.
|
friend |
Definition at line 79 of file glShader.h.
|
private |
Definition at line 89 of file glShader.h.
|
private |
Definition at line 87 of file glShader.h.
|
private |
Definition at line 90 of file glShader.h.
|
private |
Definition at line 88 of file glShader.h.