Add instanced detail shader
This commit is contained in:
parent
0960f090dc
commit
cad1efbff1
29
data/shaders/instanced_detailledobject_pass2.frag
Normal file
29
data/shaders/instanced_detailledobject_pass2.frag
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#ifndef GL_ARB_bindless_texture
|
||||||
|
uniform sampler2D Albedo;
|
||||||
|
uniform sampler2D Detail;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef GL_ARB_bindless_texture
|
||||||
|
flat in sampler2D handle;
|
||||||
|
flat in sampler2D secondhandle;
|
||||||
|
#endif
|
||||||
|
in vec2 uv;
|
||||||
|
in vec2 uv_bis;
|
||||||
|
out vec4 FragColor;
|
||||||
|
|
||||||
|
vec3 getLightFactor(float specMapValue);
|
||||||
|
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
#ifdef GL_ARB_bindless_texture
|
||||||
|
vec4 color = texture(handle, uv);
|
||||||
|
color.xyz = pow(color.xyz, vec3(2.2));
|
||||||
|
vec4 detail = texture(secondhandle, uv_bis);
|
||||||
|
#else
|
||||||
|
vec4 color = texture(Albedo, uv);
|
||||||
|
vec4 detail = texture(Detail, uv_bis);
|
||||||
|
#endif
|
||||||
|
color *= detail;
|
||||||
|
vec3 LightFactor = getLightFactor(1. - color.a);
|
||||||
|
FragColor = vec4(color.xyz * LightFactor, 1.);
|
||||||
|
}
|
@ -931,6 +931,21 @@ namespace MeshShader
|
|||||||
AssignSamplerNames(Program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "Albedo", 4, "Detail");
|
AssignSamplerNames(Program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "Albedo", 4, "Detail");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InstancedDetailledObjectPass2Shader::InstancedDetailledObjectPass2Shader()
|
||||||
|
{
|
||||||
|
Program = LoadProgram(
|
||||||
|
GL_VERTEX_SHADER, file_manager->getAsset("shaders/utils/getworldmatrix.vert").c_str(),
|
||||||
|
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/instanced_detailledobject_pass2.frag").c_str());
|
||||||
|
AssignUniforms();
|
||||||
|
|
||||||
|
AssignSamplerNames(Program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "Albedo", 4, "Detail");
|
||||||
|
|
||||||
|
GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData");
|
||||||
|
glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0);
|
||||||
|
}
|
||||||
|
|
||||||
ObjectUnlitShader::ObjectUnlitShader()
|
ObjectUnlitShader::ObjectUnlitShader()
|
||||||
{
|
{
|
||||||
Program = LoadProgram(
|
Program = LoadProgram(
|
||||||
|
@ -524,6 +524,12 @@ public:
|
|||||||
DetailledObjectPass2Shader();
|
DetailledObjectPass2Shader();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class InstancedDetailledObjectPass2Shader : public ShaderHelperSingleton<InstancedDetailledObjectPass2Shader>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
InstancedDetailledObjectPass2Shader();
|
||||||
|
};
|
||||||
|
|
||||||
class ObjectUnlitShader : public ShaderHelperSingleton<ObjectUnlitShader, core::matrix4, core::matrix4>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered>
|
class ObjectUnlitShader : public ShaderHelperSingleton<ObjectUnlitShader, core::matrix4, core::matrix4>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user