3#ifdef TRENDERINTERFACE_GL
12# include <glm/ext.hpp>
14# include <immintrin.h>
28 constexpr T2CompiledShader()
32 constexpr T2CompiledShader( GLuint a_uiId )
36 constexpr T2CompiledShader(
const T2CompiledShader& a_rOther )
37 : m_uiId( a_rOther.m_uiId )
40 constexpr GLuint GetId()
const {
return m_uiId; }
42 constexpr operator TBOOL()
const {
return m_uiId != 0; }
72 UniformMeta( GLint a_iId )
76 UniformMeta(
const UniformMeta& a_rcOther )
78 , mat44( a_rcOther.mat44 )
84 : m_uiProgram( 0 ), m_VShader( 0 ), m_FShader( 0 )
87 T2Shader(
const T2CompiledShader& a_VShader,
const T2CompiledShader& a_FShader )
88 : m_uiProgram( 0 ), m_VShader( a_VShader ), m_FShader( a_FShader )
91 T2Shader(
const T2Shader& a_rOther )
92 : m_uiProgram( a_rOther.m_uiProgram ), m_VShader( a_rOther.m_VShader ), m_FShader( a_rOther.m_FShader )
96 void Destroy(
TBOOL a_bDeleteShaders );
98 UniformMeta& GetUniformSlotId(
const TCHAR* a_szSlotName );
99 UniformMeta& GetUniformSlotId(
const TPString8& a_strSlotName );
101 TBOOL SetUniform(
const TPString8& a_strSlotName,
const TMatrix44& a_rMatrix );
102 TBOOL SetUniform(
const TPString8& a_strSlotName,
const TMatrix44* a_pMatrix,
TUINT a_uiNumItems );
103 TBOOL SetUniform(
const TPString8& a_strSlotName,
const glm::mat4& a_rMatrix );
104 TBOOL SetUniform(
const TPString8& a_strSlotName,
const glm::mat4* a_pMatrix,
TUINT a_uiNumItems );
105 TBOOL SetUniform(
const TPString8& a_strSlotName,
const TVector4& a_rVector );
106 TBOOL SetUniform(
const TPString8& a_strSlotName,
const TVector4* a_pVector,
TUINT a_uiNumItems );
107 TBOOL SetUniform(
const TPString8& a_strSlotName,
const glm::vec4& a_rVector );
108 TBOOL SetUniform(
const TPString8& a_strSlotName,
const glm::vec4* a_pVector,
TUINT a_uiNumItems );
109 TBOOL SetUniform(
const TPString8& a_strSlotName,
const TVector3& a_rVector );
110 TBOOL SetUniform(
const TPString8& a_strSlotName,
const TVector3* a_pVector,
TUINT a_uiNumItems );
111 TBOOL SetUniform(
const TPString8& a_strSlotName,
TFLOAT a_fValue );
112 TBOOL SetUniform(
const TPString8& a_strSlotName,
const TFLOAT* a_pValue,
TUINT a_uiNumItems );
113 TBOOL SetUniform(
const TPString8& a_strSlotName,
TINT a_iValue );
114 TBOOL SetUniform(
const TPString8& a_strSlotName,
const TINT* a_pValue,
TUINT a_uiNumItems );
115 TBOOL SetUniform(
const TPString8& a_strSlotName,
TUINT a_uiValue );
116 TBOOL SetUniform(
const TPString8& a_strSlotName,
const TUINT* a_pValue,
TUINT a_uiNumItems );
118 GLuint GetProgram()
const {
return m_uiProgram; }
119 T2CompiledShader GetVertexShader()
const {
return m_VShader; }
120 T2CompiledShader GetFragmentShader()
const {
return m_FShader; }
122 T2Shader& operator=(
const T2Shader& a_rOther );
125 friend class T2Render;
126 friend class T2RenderContext;
131 T2CompiledShader m_VShader;
132 T2CompiledShader m_FShader;
134 T2Map<TPString8, UniformMeta, TPString8::Comparator> m_UniformToSlotId;
4x4 matrix implementation for the Toshi engine
3D vector implementation for the Toshi engine
#define TOSHI_NAMESPACE_START
#define TOSHI_NAMESPACE_END