clang fixes
This commit is contained in:
parent
44bce402e3
commit
8483613a4e
@ -198,18 +198,18 @@ void IrrDriver::renderSolidSecondPass()
|
||||
|
||||
renderMeshes2ndPass<MeshShader::ObjectPass2Shader, video::EVT_STANDARD>(MeshShader::ObjectPass2ShaderInstance, std::vector<GLuint>({ MeshShader::ObjectPass2ShaderInstance->TU_Albedo }), ListDefaultStandardSM::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::ObjectPass2Shader, video::EVT_TANGENTS>(MeshShader::ObjectPass2ShaderInstance, std::vector<GLuint>({ MeshShader::ObjectPass2ShaderInstance->TU_Albedo }), ListDefaultTangentSM::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::ObjectRefPass2Shader, video::EVT_STANDARD>(MeshShader::ObjectRefPass2ShaderInstance, std::vector<GLuint>({ (GLuint)MeshShader::ObjectRefPass2ShaderInstance->TU_Albedo }, ListAlphaRefSM::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::ObjectRefPass2Shader, video::EVT_STANDARD>(MeshShader::ObjectRefPass2ShaderInstance, std::vector<GLuint>({ MeshShader::ObjectRefPass2ShaderInstance->TU_Albedo }), ListAlphaRefSM::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::SphereMapShader, video::EVT_STANDARD>(MeshShader::SphereMapShaderInstance, std::vector<GLuint>({ MeshShader::SphereMapShaderInstance->TU_tex }), ListSphereMapSM::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::ObjectUnlitShader, video::EVT_STANDARD>(MeshShader::ObjectUnlitShaderInstance, std::vector<GLuint>({ MeshShader::ObjectUnlitShaderInstance->TU_tex }), ListUnlitSM::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::DetailledObjectPass2Shader, video::EVT_2TCOORDS>(MeshShader::DetailledObjectPass2ShaderInstance, std::vector<GLuint>({ MeshShader::DetailledObjectPass2ShaderInstance->TU_Albedo, MeshShader::DetailledObjectPass2ShaderInstance->TU_detail }), ListDetailSM::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::SplattingShader, video::EVT_2TCOORDS>(MeshShader::SplattingShaderInstance,
|
||||
std::vector<GLuint>({
|
||||
(GLuint)8,
|
||||
(GLuint)MeshShader::SplattingShaderInstance->TU_tex_layout,
|
||||
(GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail0,
|
||||
(GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail1,
|
||||
(GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail2,
|
||||
(GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail3 }),
|
||||
std::vector<GLuint> v;
|
||||
v.push_back(8);
|
||||
v.push_back(MeshShader::SplattingShaderInstance->TU_tex_layout);
|
||||
v.push_back(MeshShader::SplattingShaderInstance->TU_tex_detail0);
|
||||
v.push_back(MeshShader::SplattingShaderInstance->TU_tex_detail1);
|
||||
v.push_back(MeshShader::SplattingShaderInstance->TU_tex_detail2);
|
||||
v.push_back(MeshShader::SplattingShaderInstance->TU_tex_detail3);
|
||||
renderMeshes2ndPass<MeshShader::SplattingShader, video::EVT_2TCOORDS>(MeshShader::SplattingShaderInstance, v,
|
||||
ListSplattingSM::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::GrassPass2Shader, video::EVT_STANDARD>(MeshShader::GrassPass2ShaderInstance, std::vector<GLuint>({ MeshShader::GrassPass2ShaderInstance->TU_Albedo }), ListGrassSM::Arguments);
|
||||
}
|
||||
@ -238,16 +238,16 @@ void IrrDriver::renderTransparent()
|
||||
if (World::getWorld() && World::getWorld()->isFogEnabled())
|
||||
{
|
||||
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
|
||||
renderMeshes2ndPass<MeshShader::TransparentFogShader, video::EVT_STANDARD>(MeshShader::TransparentFogShaderInstance, { MeshShader::TransparentFogShaderInstance->TU_tex }, ListBlendTransparentFog::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::TransparentFogShader, video::EVT_STANDARD>(MeshShader::TransparentFogShaderInstance, std::vector<GLuint>({ MeshShader::TransparentFogShaderInstance->TU_tex }), ListBlendTransparentFog::Arguments);
|
||||
glBlendFunc(GL_ONE, GL_ONE);
|
||||
renderMeshes2ndPass<MeshShader::TransparentFogShader, video::EVT_STANDARD>(MeshShader::TransparentFogShaderInstance, { MeshShader::TransparentFogShaderInstance->TU_tex }, ListAdditiveTransparentFog::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::TransparentFogShader, video::EVT_STANDARD>(MeshShader::TransparentFogShaderInstance, std::vector<GLuint>({ MeshShader::TransparentFogShaderInstance->TU_tex }), ListAdditiveTransparentFog::Arguments);
|
||||
}
|
||||
else
|
||||
{
|
||||
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
|
||||
renderMeshes2ndPass<MeshShader::TransparentShader, video::EVT_STANDARD>(MeshShader::TransparentShaderInstance, { MeshShader::TransparentShaderInstance->TU_tex }, ListBlendTransparent::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::TransparentShader, video::EVT_STANDARD>(MeshShader::TransparentShaderInstance, std::vector<GLuint>({ MeshShader::TransparentShaderInstance->TU_tex }), ListBlendTransparent::Arguments);
|
||||
glBlendFunc(GL_ONE, GL_ONE);
|
||||
renderMeshes2ndPass<MeshShader::TransparentShader, video::EVT_STANDARD>(MeshShader::TransparentShaderInstance, { MeshShader::TransparentShaderInstance->TU_tex }, ListAdditiveTransparent::Arguments);
|
||||
renderMeshes2ndPass<MeshShader::TransparentShader, video::EVT_STANDARD>(MeshShader::TransparentShaderInstance, std::vector<GLuint>({ MeshShader::TransparentShaderInstance->TU_tex }), ListAdditiveTransparent::Arguments);
|
||||
}
|
||||
|
||||
if (!UserConfigParams::m_dynamic_lights)
|
||||
@ -405,11 +405,11 @@ void IrrDriver::renderShadows()
|
||||
|
||||
m_scene_manager->drawAll(scene::ESNRP_SOLID);
|
||||
|
||||
drawShadow<MeshShader::ShadowShader, EVT_STANDARD>(MeshShader::ShadowShaderInstance, {}, ListDefaultStandardG::Arguments);
|
||||
drawShadow<MeshShader::ShadowShader, EVT_2TCOORDS>(MeshShader::ShadowShaderInstance, {}, ListDefault2TCoordG::Arguments);
|
||||
drawShadow<MeshShader::ShadowShader, EVT_TANGENTS>(MeshShader::ShadowShaderInstance, {}, ListNormalG::Arguments);
|
||||
drawShadow<MeshShader::RefShadowShader, EVT_STANDARD>(MeshShader::RefShadowShaderInstance, { MeshShader::RefShadowShaderInstance->TU_tex }, ListAlphaRefG::Arguments);
|
||||
drawShadowGrass({ MeshShader::GrassShadowShaderInstance->TU_tex }, ListGrassG::Arguments);
|
||||
drawShadow<MeshShader::ShadowShader, EVT_STANDARD>(MeshShader::ShadowShaderInstance, std::vector<GLuint>(), ListDefaultStandardG::Arguments);
|
||||
drawShadow<MeshShader::ShadowShader, EVT_2TCOORDS>(MeshShader::ShadowShaderInstance, std::vector<GLuint>(), ListDefault2TCoordG::Arguments);
|
||||
drawShadow<MeshShader::ShadowShader, EVT_TANGENTS>(MeshShader::ShadowShaderInstance, std::vector<GLuint>(), ListNormalG::Arguments);
|
||||
drawShadow<MeshShader::RefShadowShader, EVT_STANDARD>(MeshShader::RefShadowShaderInstance, std::vector<GLuint>({ MeshShader::RefShadowShaderInstance->TU_tex }), ListAlphaRefG::Arguments);
|
||||
drawShadowGrass(std::vector<GLuint>({ MeshShader::GrassShadowShaderInstance->TU_tex }), ListGrassG::Arguments);
|
||||
|
||||
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||
|
||||
@ -419,6 +419,6 @@ void IrrDriver::renderShadows()
|
||||
m_rtts->getRSM().Bind();
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
drawRSM<EVT_STANDARD>(rsm_matrix, { MeshShader::RSMShader::TU_tex }, ListDefaultStandardG::Arguments);
|
||||
drawRSM<EVT_2TCOORDS>(rsm_matrix, { MeshShader::RSMShader::TU_tex }, ListDefault2TCoordG::Arguments);
|
||||
drawRSM<EVT_STANDARD>(rsm_matrix, std::vector<GLuint>({ MeshShader::RSMShader::TU_tex }), ListDefaultStandardG::Arguments);
|
||||
drawRSM<EVT_2TCOORDS>(rsm_matrix, std::vector<GLuint>({ MeshShader::RSMShader::TU_tex }), ListDefault2TCoordG::Arguments);
|
||||
}
|
@ -483,6 +483,166 @@ void glUniform1fWrapper(GLuint a, float b)
|
||||
|
||||
namespace MeshShader
|
||||
{
|
||||
std::vector<std::pair<GLuint, const char *> > TexUnit(GLuint tex, const char* n)
|
||||
{
|
||||
std::vector<std::pair<GLuint, const char *> > v;
|
||||
v.push_back(std::pair<GLuint, const char *>(tex, n));
|
||||
return v;
|
||||
}
|
||||
std::vector<std::pair<GLuint, const char *> > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2)
|
||||
{
|
||||
std::vector<std::pair<GLuint, const char *> > v;
|
||||
v.push_back(std::pair<GLuint, const char *>(tex, n));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex2, n2));
|
||||
return v;
|
||||
}
|
||||
std::vector<std::pair<GLuint, const char *> > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2,
|
||||
GLuint tex3, const char* n3)
|
||||
{
|
||||
std::vector<std::pair<GLuint, const char *> > v;
|
||||
v.push_back(std::pair<GLuint, const char *>(tex, n));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex2, n2));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex3, n3));
|
||||
return v;
|
||||
}
|
||||
std::vector<std::pair<GLuint, const char *> > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2,
|
||||
GLuint tex3, const char* n3, GLuint tex4, const char* n4)
|
||||
{
|
||||
std::vector<std::pair<GLuint, const char *> > v;
|
||||
v.push_back(std::pair<GLuint, const char *>(tex, n));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex2, n2));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex3, n3));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex4, n4));
|
||||
return v;
|
||||
}
|
||||
std::vector<std::pair<GLuint, const char *> > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2,
|
||||
GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5)
|
||||
{
|
||||
std::vector<std::pair<GLuint, const char *> > v;
|
||||
v.push_back(std::pair<GLuint, const char *>(tex, n));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex2, n2));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex3, n3));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex4, n4));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex5, n5));
|
||||
return v;
|
||||
}
|
||||
std::vector<std::pair<GLuint, const char *> > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2,
|
||||
GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5,
|
||||
GLuint tex6, const char* n6)
|
||||
{
|
||||
std::vector<std::pair<GLuint, const char *> > v;
|
||||
v.push_back(std::pair<GLuint, const char *>(tex, n));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex2, n2));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex3, n3));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex4, n4));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex5, n5));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex6, n6));
|
||||
return v;
|
||||
}
|
||||
std::vector<std::pair<GLuint, const char *> > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2,
|
||||
GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5,
|
||||
GLuint tex6, const char* n6, GLuint tex7, const char* n7)
|
||||
{
|
||||
std::vector<std::pair<GLuint, const char *> > v;
|
||||
v.push_back(std::pair<GLuint, const char *>(tex, n));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex2, n2));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex3, n3));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex4, n4));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex5, n5));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex6, n6));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex7, n7));
|
||||
return v;
|
||||
}
|
||||
std::vector<std::pair<GLuint, const char *> > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2,
|
||||
GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5,
|
||||
GLuint tex6, const char* n6, GLuint tex7, const char* n7, GLuint tex8, const char* n8)
|
||||
{
|
||||
std::vector<std::pair<GLuint, const char *> > v;
|
||||
v.push_back(std::pair<GLuint, const char *>(tex, n));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex2, n2));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex3, n3));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex4, n4));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex5, n5));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex6, n6));
|
||||
v.push_back(std::pair<GLuint, const char *>(tex8, n8));
|
||||
return v;
|
||||
}
|
||||
std::vector<const char*> Uniforms(const char* c1)
|
||||
{
|
||||
std::vector<const char*> v;
|
||||
v.push_back(c1);
|
||||
return v;
|
||||
}
|
||||
std::vector<const char*> Uniforms(const char* c1, const char* c2)
|
||||
{
|
||||
std::vector<const char*> v;
|
||||
v.push_back(c1);
|
||||
v.push_back(c2);
|
||||
return v;
|
||||
}
|
||||
std::vector<const char*> Uniforms(const char* c1, const char* c2, const char* c3)
|
||||
{
|
||||
std::vector<const char*> v;
|
||||
v.push_back(c1);
|
||||
v.push_back(c2);
|
||||
v.push_back(c3);
|
||||
return v;
|
||||
}
|
||||
std::vector<const char*> Uniforms(const char* c1, const char* c2, const char* c3, const char* c4)
|
||||
{
|
||||
std::vector<const char*> v;
|
||||
v.push_back(c1);
|
||||
v.push_back(c2);
|
||||
v.push_back(c3);
|
||||
v.push_back(c4);
|
||||
return v;
|
||||
}
|
||||
std::vector<const char*> Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5)
|
||||
{
|
||||
std::vector<const char*> v;
|
||||
v.push_back(c1);
|
||||
v.push_back(c2);
|
||||
v.push_back(c3);
|
||||
v.push_back(c4);
|
||||
v.push_back(c5);
|
||||
return v;
|
||||
}
|
||||
std::vector<const char*> Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5, const char* c6)
|
||||
{
|
||||
std::vector<const char*> v;
|
||||
v.push_back(c1);
|
||||
v.push_back(c2);
|
||||
v.push_back(c3);
|
||||
v.push_back(c4);
|
||||
v.push_back(c5);
|
||||
v.push_back(c6);
|
||||
return v;
|
||||
}
|
||||
std::vector<const char*> Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5, const char* c6, const char* c7)
|
||||
{
|
||||
std::vector<const char*> v;
|
||||
v.push_back(c1);
|
||||
v.push_back(c2);
|
||||
v.push_back(c3);
|
||||
v.push_back(c4);
|
||||
v.push_back(c5);
|
||||
v.push_back(c6);
|
||||
v.push_back(c7);
|
||||
return v;
|
||||
}
|
||||
std::vector<const char*> Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5, const char* c6, const char* c7, const char* c8)
|
||||
{
|
||||
std::vector<const char*> v;
|
||||
v.push_back(c1);
|
||||
v.push_back(c2);
|
||||
v.push_back(c3);
|
||||
v.push_back(c4);
|
||||
v.push_back(c5);
|
||||
v.push_back(c6);
|
||||
v.push_back(c7);
|
||||
v.push_back(c8);
|
||||
return v;
|
||||
}
|
||||
|
||||
// Solid Normal and depth pass shaders
|
||||
ObjectPass1Shader::ObjectPass1Shader()
|
||||
@ -491,14 +651,14 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass1.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, {"ModelMatrix", "InverseModelMatrix"});
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||
}
|
||||
TU_tex = 0;
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit( TU_tex, "tex" ));
|
||||
}
|
||||
|
||||
ObjectRefPass1Shader::ObjectRefPass1Shader()
|
||||
@ -507,14 +667,14 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix", "InverseModelMatrix", "TextureMatrix" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix", "TextureMatrix"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||
}
|
||||
TU_tex = 0;
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
}
|
||||
|
||||
GrassPass1Shader::GrassPass1Shader()
|
||||
@ -523,9 +683,9 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/grass_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix", "InverseModelMatrix", "windDir" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix", "windDir"));
|
||||
TU_tex = 0;
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
}
|
||||
|
||||
NormalMapShader::NormalMapShader()
|
||||
@ -534,7 +694,7 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/normalmap.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/normalmap.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, {"ModelMatrix", "InverseModelMatrix"});
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
@ -542,7 +702,7 @@ namespace MeshShader
|
||||
}
|
||||
TU_normalmap = 1;
|
||||
TU_glossy = 0;
|
||||
AssignTextureUnit(Program, { { TU_normalmap, "normalMap" }, { TU_glossy, "DiffuseForAlpha" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_normalmap, "normalMap", TU_glossy, "DiffuseForAlpha"));
|
||||
}
|
||||
|
||||
InstancedObjectPass1Shader::InstancedObjectPass1Shader()
|
||||
@ -553,7 +713,7 @@ namespace MeshShader
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass1.frag").c_str());
|
||||
TU_tex = 0;
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
@ -571,7 +731,7 @@ namespace MeshShader
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str());
|
||||
TU_tex = 0;
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
@ -588,9 +748,9 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_grass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "windDir" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("windDir"));
|
||||
TU_tex = 0;
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
@ -607,7 +767,7 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass2.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix", "TextureMatrix", "ambient" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix", "ambient"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
@ -615,7 +775,7 @@ namespace MeshShader
|
||||
}
|
||||
TU_Albedo = 3;
|
||||
|
||||
AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" } });
|
||||
AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo"));
|
||||
}
|
||||
|
||||
ObjectPass2Shader *ObjectPass2ShaderInstance;
|
||||
@ -627,10 +787,10 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_object_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass2.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ambient" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ambient"));
|
||||
TU_Albedo = 3;
|
||||
|
||||
AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" } });
|
||||
AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo"));
|
||||
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
@ -648,10 +808,10 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_object_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass2.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ambient" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ambient"));
|
||||
TU_Albedo = 3;
|
||||
|
||||
AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" } });
|
||||
AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo"));
|
||||
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||
@ -665,13 +825,13 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/detailledobject_pass2.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix", "ambient" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "ambient"));
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||
TU_Albedo = 3;
|
||||
TU_detail = 4;
|
||||
|
||||
AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" }, { TU_detail, "Detail" } });
|
||||
AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo", TU_detail, "Detail"));
|
||||
}
|
||||
|
||||
DetailledObjectPass2Shader *DetailledObjectPass2ShaderInstance;
|
||||
@ -681,7 +841,7 @@ namespace MeshShader
|
||||
Program = LoadProgram(
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
@ -689,7 +849,7 @@ namespace MeshShader
|
||||
}
|
||||
TU_tex = 3;
|
||||
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
}
|
||||
|
||||
ObjectUnlitShader *ObjectUnlitShaderInstance;
|
||||
@ -700,7 +860,7 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass2.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix", "TextureMatrix", "ambient" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix", "ambient"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
@ -708,7 +868,7 @@ namespace MeshShader
|
||||
}
|
||||
TU_Albedo = 3;
|
||||
|
||||
AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" } });
|
||||
AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo"));
|
||||
}
|
||||
|
||||
ObjectRefPass2Shader *ObjectRefPass2ShaderInstance;
|
||||
@ -719,10 +879,10 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/grass_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/grass_pass2.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix", "windDir", "ambient" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "windDir", "ambient"));
|
||||
TU_Albedo = 3;
|
||||
|
||||
AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" } });
|
||||
AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo"));
|
||||
}
|
||||
|
||||
GrassPass2Shader *GrassPass2ShaderInstance;
|
||||
@ -734,11 +894,11 @@ namespace MeshShader
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_grass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/grass_pass2.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "windDir", "SunDir", "ambient" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("windDir", "SunDir", "ambient"));
|
||||
TU_Albedo = 3;
|
||||
TU_dtex = 4;
|
||||
|
||||
AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" }, { TU_dtex, "dtex" } });
|
||||
AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo", TU_dtex, "dtex"));
|
||||
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||
@ -753,7 +913,7 @@ namespace MeshShader
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getPosFromUVDepth.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectpass_spheremap.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix", "InverseModelMatrix", "ambient" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix", "ambient"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
@ -761,7 +921,7 @@ namespace MeshShader
|
||||
}
|
||||
TU_tex = 3;
|
||||
|
||||
AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_tex, "tex"));
|
||||
}
|
||||
|
||||
SphereMapShader *SphereMapShaderInstance;
|
||||
@ -771,15 +931,15 @@ namespace MeshShader
|
||||
Program = LoadProgram(
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/splatting.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, {"ModelMatrix", "ambient"});
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "ambient"));
|
||||
TU_tex_layout = 3;
|
||||
TU_tex_detail0 = 4;
|
||||
TU_tex_detail1 = 5;
|
||||
TU_tex_detail2 = 6;
|
||||
TU_tex_detail3 = 7;
|
||||
|
||||
AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_tex_layout, "tex_layout" },
|
||||
{ TU_tex_detail0, "tex_detail0" }, { TU_tex_detail1, "tex_detail1" }, { TU_tex_detail2, "tex_detail2" }, { TU_tex_detail3, "tex_detail3" } });
|
||||
AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_tex_layout, "tex_layout",
|
||||
TU_tex_detail0, "tex_detail0", TU_tex_detail1, "tex_detail1", TU_tex_detail2, "tex_detail2", TU_tex_detail3, "tex_detail3"));
|
||||
}
|
||||
|
||||
SplattingShader *SplattingShaderInstance;
|
||||
@ -813,7 +973,7 @@ namespace MeshShader
|
||||
Program = LoadProgram(
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/transparent.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, {"ModelMatrix", "TextureMatrix" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
@ -821,7 +981,7 @@ namespace MeshShader
|
||||
}
|
||||
TU_tex = 0;
|
||||
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
}
|
||||
|
||||
TransparentShader *TransparentShaderInstance;
|
||||
@ -831,7 +991,7 @@ namespace MeshShader
|
||||
Program = LoadProgram(
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/transparentfog.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix", "TextureMatrix", "fogmax", "startH", "endH", "start", "end", "col" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix", "fogmax", "startH", "endH", "start", "end", "col"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
@ -839,7 +999,7 @@ namespace MeshShader
|
||||
}
|
||||
TU_tex = 0;
|
||||
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
}
|
||||
|
||||
TransparentFogShader *TransparentFogShaderInstance;
|
||||
@ -924,7 +1084,7 @@ namespace MeshShader
|
||||
GL_GEOMETRY_SHADER, file_manager->getAsset("shaders/shadow.geom").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/white.frag").c_str());
|
||||
}
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix"));
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||
}
|
||||
@ -945,7 +1105,7 @@ namespace MeshShader
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/rsm.frag").c_str());
|
||||
uniform_MM = glGetUniformLocation(Program, "ModelMatrix");
|
||||
uniform_RSMMatrix = glGetUniformLocation(Program, "RSMMatrix");
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
}
|
||||
|
||||
void RSMShader::setUniforms(const core::matrix4 &RSMMatrix, const core::matrix4 &ModelMatrix)
|
||||
@ -998,12 +1158,12 @@ namespace MeshShader
|
||||
GL_GEOMETRY_SHADER, file_manager->getAsset("shaders/shadow.geom").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str());
|
||||
}
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix"));
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||
TU_tex = 0;
|
||||
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
}
|
||||
|
||||
RefShadowShader *RefShadowShaderInstance;
|
||||
@ -1029,7 +1189,7 @@ namespace MeshShader
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str());
|
||||
}
|
||||
TU_tex = 0;
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||
}
|
||||
@ -1054,12 +1214,12 @@ namespace MeshShader
|
||||
GL_GEOMETRY_SHADER, file_manager->getAsset("shaders/shadow.geom").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str());
|
||||
}
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix", "windDir" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "windDir"));
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||
TU_tex = 0;
|
||||
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
}
|
||||
|
||||
GrassShadowShader *GrassShadowShaderInstance;
|
||||
@ -1085,9 +1245,9 @@ namespace MeshShader
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str());
|
||||
}
|
||||
TU_tex = 0;
|
||||
AssignTextureUnit(Program, { { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
|
||||
AssignUniforms(Program, uniforms, { "windDir" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("windDir"));
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||
}
|
||||
@ -1099,7 +1259,7 @@ namespace MeshShader
|
||||
Program = LoadProgram(
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/displace.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/white.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix"});
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix"));
|
||||
if (!UserConfigParams::m_ubo_disabled)
|
||||
{
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
@ -1115,12 +1275,13 @@ namespace MeshShader
|
||||
Program = LoadProgram(
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/displace.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/displace.frag").c_str());
|
||||
AssignUniforms(Program, uniforms, { "ModelMatrix", "dir", "dir2" });
|
||||
AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "dir", "dir2" ));
|
||||
TU_displacement_tex = 0;
|
||||
TU_color_tex = 1;
|
||||
TU_mask_tex = 2;
|
||||
TU_tex = 3;
|
||||
AssignTextureUnit(Program, { { TU_displacement_tex, "displacement_tex" }, { TU_color_tex, "color_tex" }, { TU_mask_tex, "mask_tex" }, { TU_tex, "tex" } });
|
||||
AssignTextureUnit(Program, TexUnit(TU_displacement_tex, "displacement_tex", TU_color_tex, "color_tex",
|
||||
TU_mask_tex, "mask_tex", TU_tex, "tex"));
|
||||
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user