|
|
|
@ -491,16 +491,15 @@ namespace UtilShader
|
|
|
|
|
glEnableVertexAttribArray(attrib_position);
|
|
|
|
|
glVertexAttribPointer(attrib_position, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), 0);
|
|
|
|
|
uniform_color = glGetUniformLocation(Program, "color");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ColoredLine::setUniforms(const irr::video::SColor &col)
|
|
|
|
|
{
|
|
|
|
|
if (UserConfigParams::m_ubo_disabled)
|
|
|
|
|
if (irr_driver->needUBOWorkaround())
|
|
|
|
|
bypassUBO(Program);
|
|
|
|
|
glUniform4i(uniform_color, col.getRed(), col.getGreen(), col.getBlue(), col.getAlpha());
|
|
|
|
|
glUniformMatrix4fv(glGetUniformLocation(Program, "ModelMatrix"), 1, GL_FALSE, core::IdentityMatrix.pointer());
|
|
|
|
@ -609,11 +608,10 @@ 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());
|
|
|
|
|
AssignUniforms("ModelMatrix", "InverseModelMatrix");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
TU_tex = 0;
|
|
|
|
|
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
|
|
|
|
}
|
|
|
|
@ -625,11 +623,10 @@ 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());
|
|
|
|
|
AssignUniforms("ModelMatrix", "InverseModelMatrix", "TextureMatrix");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
TU_tex = 0;
|
|
|
|
|
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
|
|
|
|
}
|
|
|
|
@ -652,11 +649,10 @@ namespace MeshShader
|
|
|
|
|
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("ModelMatrix", "InverseModelMatrix");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
TU_normalmap = 1;
|
|
|
|
|
TU_glossy = 0;
|
|
|
|
|
AssignTextureUnit(Program, TexUnit(TU_normalmap, "normalMap"), TexUnit(TU_glossy, "DiffuseForAlpha"));
|
|
|
|
@ -671,11 +667,9 @@ namespace MeshShader
|
|
|
|
|
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass1.frag").c_str());
|
|
|
|
|
TU_tex = 0;
|
|
|
|
|
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
InstancedObjectRefPass1Shader::InstancedObjectRefPass1Shader()
|
|
|
|
@ -687,11 +681,9 @@ namespace MeshShader
|
|
|
|
|
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str());
|
|
|
|
|
TU_tex = 0;
|
|
|
|
|
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
InstancedGrassPass1Shader::InstancedGrassPass1Shader()
|
|
|
|
@ -704,11 +696,9 @@ namespace MeshShader
|
|
|
|
|
AssignUniforms("windDir");
|
|
|
|
|
TU_tex = 0;
|
|
|
|
|
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Solid Lit pass shaders
|
|
|
|
@ -719,11 +709,10 @@ namespace MeshShader
|
|
|
|
|
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("ModelMatrix", "TextureMatrix", "ambient");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
TU_Albedo = 3;
|
|
|
|
|
|
|
|
|
|
AssignTextureUnit(Program,
|
|
|
|
@ -751,11 +740,9 @@ namespace MeshShader
|
|
|
|
|
TexUnit(TU_Albedo, "Albedo")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
InstancedObjectRefPass2Shader::InstancedObjectRefPass2Shader()
|
|
|
|
@ -806,11 +793,10 @@ namespace MeshShader
|
|
|
|
|
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("ModelMatrix");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
TU_tex = 3;
|
|
|
|
|
|
|
|
|
|
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
|
|
|
@ -823,11 +809,10 @@ namespace MeshShader
|
|
|
|
|
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("ModelMatrix", "TextureMatrix", "ambient");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
TU_Albedo = 3;
|
|
|
|
|
|
|
|
|
|
AssignTextureUnit(Program,
|
|
|
|
@ -886,11 +871,10 @@ namespace MeshShader
|
|
|
|
|
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("ModelMatrix", "InverseModelMatrix", "ambient");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
TU_tex = 3;
|
|
|
|
|
|
|
|
|
|
AssignTextureUnit(Program,
|
|
|
|
@ -955,11 +939,10 @@ namespace MeshShader
|
|
|
|
|
GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(),
|
|
|
|
|
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/transparent.frag").c_str());
|
|
|
|
|
AssignUniforms("ModelMatrix", "TextureMatrix");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
TU_tex = 0;
|
|
|
|
|
|
|
|
|
|
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
|
|
|
@ -971,11 +954,10 @@ namespace MeshShader
|
|
|
|
|
GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(),
|
|
|
|
|
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/transparentfog.frag").c_str());
|
|
|
|
|
AssignUniforms("ModelMatrix", "TextureMatrix", "fogmax", "startH", "endH", "start", "end", "col");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
TU_tex = 0;
|
|
|
|
|
|
|
|
|
|
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
|
|
|
@ -1028,16 +1010,14 @@ namespace MeshShader
|
|
|
|
|
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/colorize.frag").c_str());
|
|
|
|
|
uniform_MM = glGetUniformLocation(Program, "ModelMatrix");
|
|
|
|
|
uniform_col = glGetUniformLocation(Program, "col");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ColorizeShader::setUniforms(const core::matrix4 &ModelMatrix, float r, float g, float b)
|
|
|
|
|
{
|
|
|
|
|
if (UserConfigParams::m_ubo_disabled)
|
|
|
|
|
if (irr_driver->needUBOWorkaround())
|
|
|
|
|
bypassUBO(Program);
|
|
|
|
|
glUniformMatrix4fv(uniform_MM, 1, GL_FALSE, ModelMatrix.pointer());
|
|
|
|
|
glUniform3f(uniform_col, r, g, b);
|
|
|
|
@ -1237,11 +1217,9 @@ namespace MeshShader
|
|
|
|
|
GL_VERTEX_SHADER, file_manager->getAsset("shaders/displace.vert").c_str(),
|
|
|
|
|
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/white.frag").c_str());
|
|
|
|
|
AssignUniforms("ModelMatrix");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DisplaceMaskShader *DisplaceMaskShaderInstance;
|
|
|
|
@ -1283,11 +1261,9 @@ namespace MeshShader
|
|
|
|
|
attrib_position = glGetAttribLocation(Program, "Position");
|
|
|
|
|
uniform_MM = glGetUniformLocation(Program, "ModelMatrix");
|
|
|
|
|
uniform_tex = glGetUniformLocation(Program, "tex");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
glGenVertexArrays(1, &cubevao);
|
|
|
|
|
glBindVertexArray(cubevao);
|
|
|
|
@ -1300,7 +1276,7 @@ namespace MeshShader
|
|
|
|
|
|
|
|
|
|
void SkyboxShader::setUniforms(const core::matrix4 &ModelMatrix, const core::vector2df &screen, unsigned TU_tex)
|
|
|
|
|
{
|
|
|
|
|
if (UserConfigParams::m_ubo_disabled)
|
|
|
|
|
if (irr_driver->needUBOWorkaround())
|
|
|
|
|
bypassUBO(Program);
|
|
|
|
|
glUniformMatrix4fv(uniform_MM, 1, GL_FALSE, ModelMatrix.pointer());
|
|
|
|
|
glUniform1i(uniform_tex, TU_tex);
|
|
|
|
@ -1318,11 +1294,10 @@ namespace MeshShader
|
|
|
|
|
GL_VERTEX_SHADER, file_manager->getAsset("shaders/frustrum.vert").c_str(),
|
|
|
|
|
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/coloredquad.frag").c_str());
|
|
|
|
|
attrib_position = glGetAttribLocation(Program, "Position");
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
uniform_color = glGetUniformLocation(Program, "color");
|
|
|
|
|
uniform_idx = glGetUniformLocation(Program, "idx");
|
|
|
|
|
|
|
|
|
@ -1396,7 +1371,7 @@ namespace LightShader
|
|
|
|
|
|
|
|
|
|
void PointLightShader::setUniforms(const core::vector2df &screen, unsigned spec, unsigned TU_ntex, unsigned TU_dtex)
|
|
|
|
|
{
|
|
|
|
|
if (UserConfigParams::m_ubo_disabled)
|
|
|
|
|
if (irr_driver->needUBOWorkaround())
|
|
|
|
|
bypassUBO(Program);
|
|
|
|
|
glUniform1f(uniform_spec, 200);
|
|
|
|
|
|
|
|
|
@ -1740,16 +1715,14 @@ namespace FullScreenShader
|
|
|
|
|
uniform_direction = glGetUniformLocation(Program, "direction");
|
|
|
|
|
uniform_col = glGetUniformLocation(Program, "col");
|
|
|
|
|
vao = createFullScreenVAO(Program);
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SunLightShader::setUniforms(const core::vector3df &direction, float r, float g, float b, unsigned TU_ntex, unsigned TU_dtex)
|
|
|
|
|
{
|
|
|
|
|
if (UserConfigParams::m_ubo_disabled)
|
|
|
|
|
if (irr_driver->needUBOWorkaround())
|
|
|
|
|
bypassUBO(Program);
|
|
|
|
|
glUniform3f(uniform_direction, direction.X, direction.Y, direction.Z);
|
|
|
|
|
glUniform3f(uniform_col, r, g, b);
|
|
|
|
@ -1810,16 +1783,14 @@ namespace FullScreenShader
|
|
|
|
|
uniform_direction = glGetUniformLocation(Program, "direction");
|
|
|
|
|
uniform_col = glGetUniformLocation(Program, "col");
|
|
|
|
|
vao = createFullScreenVAO(Program);
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ShadowedSunLightShader::setUniforms(const core::vector3df &direction, float r, float g, float b, unsigned TU_ntex, unsigned TU_dtex, unsigned TU_shadowtex)
|
|
|
|
|
{
|
|
|
|
|
if (UserConfigParams::m_ubo_disabled)
|
|
|
|
|
if (irr_driver->needUBOWorkaround())
|
|
|
|
|
bypassUBO(Program);
|
|
|
|
|
glUniform3f(uniform_direction, direction.X, direction.Y, direction.Z);
|
|
|
|
|
glUniform3f(uniform_col, r, g, b);
|
|
|
|
@ -1849,16 +1820,14 @@ namespace FullScreenShader
|
|
|
|
|
uniform_direction = glGetUniformLocation(Program, "direction");
|
|
|
|
|
uniform_col = glGetUniformLocation(Program, "col");
|
|
|
|
|
vao = createVAO(Program);
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ShadowedSunLightDebugShader::setUniforms(const core::vector3df &direction, float r, float g, float b, unsigned TU_ntex, unsigned TU_dtex, unsigned TU_shadowtex)
|
|
|
|
|
{
|
|
|
|
|
if (UserConfigParams::m_ubo_disabled)
|
|
|
|
|
if (irr_driver->needUBOWorkaround())
|
|
|
|
|
bypassUBO(Program);
|
|
|
|
|
glUniform3f(uniform_direction, direction.X, direction.Y, direction.Z);
|
|
|
|
|
glUniform3f(uniform_col, r, g, b);
|
|
|
|
@ -2189,11 +2158,9 @@ namespace FullScreenShader
|
|
|
|
|
uniform_noise_texture = glGetUniformLocation(Program, "noise_texture");
|
|
|
|
|
uniform_samplePoints = glGetUniformLocation(Program, "samplePoints[0]");
|
|
|
|
|
vao = createFullScreenVAO(Program);
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
|
|
|
|
|
// SSAOSamples[4 * i] and SSAOSamples[4 * i + 1] can be negative
|
|
|
|
|
|
|
|
|
@ -2311,7 +2278,7 @@ namespace FullScreenShader
|
|
|
|
|
|
|
|
|
|
void SSAOShader::setUniforms(const core::vector2df &screen, unsigned TU_dtex, unsigned TU_noise)
|
|
|
|
|
{
|
|
|
|
|
if (UserConfigParams::m_ubo_disabled)
|
|
|
|
|
if (irr_driver->needUBOWorkaround())
|
|
|
|
|
bypassUBO(Program);
|
|
|
|
|
glUniform4fv(uniform_samplePoints, 16, SSAOSamples);
|
|
|
|
|
|
|
|
|
@ -2343,16 +2310,14 @@ namespace FullScreenShader
|
|
|
|
|
uniform_end = glGetUniformLocation(Program, "end");
|
|
|
|
|
uniform_col = glGetUniformLocation(Program, "col");
|
|
|
|
|
vao = createFullScreenVAO(Program);
|
|
|
|
|
if (!UserConfigParams::m_ubo_disabled)
|
|
|
|
|
{
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
|
|
|
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FogShader::setUniforms(float fogmax, float startH, float endH, float start, float end, const core::vector3df &col, unsigned TU_ntex)
|
|
|
|
|
{
|
|
|
|
|
if (UserConfigParams::m_ubo_disabled)
|
|
|
|
|
if (irr_driver->needUBOWorkaround())
|
|
|
|
|
bypassUBO(Program);
|
|
|
|
|
glUniform1f(uniform_fogmax, fogmax);
|
|
|
|
|
glUniform1f(uniform_startH, startH);
|
|
|
|
|