Переделка шейдера геометрического прохода отложенного рендера
This commit is contained in:
parent
7f47d5d8ac
commit
6f49ca01ac
@ -2,17 +2,19 @@
|
|||||||
|
|
||||||
layout(std140, binding = 1) uniform Material
|
layout(std140, binding = 1) uniform Material
|
||||||
{
|
{
|
||||||
vec3 ka;
|
vec3 base_color;
|
||||||
vec3 kd;
|
float roughness;
|
||||||
vec3 ks;
|
float metallic;
|
||||||
float p;
|
float specular;
|
||||||
|
vec3 emitted;
|
||||||
};
|
};
|
||||||
|
|
||||||
layout (location = 0) out vec3 gPosition;
|
layout (location = 0) out vec3 gPosition;
|
||||||
layout (location = 1) out vec3 gNormal;
|
layout (location = 1) out vec3 gNormal;
|
||||||
layout (location = 2) out vec4 gDiffuseP;
|
layout (location = 2) out vec3 gBaseColor;
|
||||||
layout (location = 3) out vec4 gAmbientSpecular;
|
layout (location = 3) out vec3 gRMS;
|
||||||
layout (location = 4) out uvec3 gID;
|
layout (location = 4) out uvec3 gID;
|
||||||
|
layout (location = 5) out vec3 gEmittedColor;
|
||||||
|
|
||||||
in vec3 vertex; // Позиция вершины в пространстве
|
in vec3 vertex; // Позиция вершины в пространстве
|
||||||
in vec3 N; // Нормаль трансформированноая
|
in vec3 N; // Нормаль трансформированноая
|
||||||
@ -21,9 +23,11 @@ in vec3 T; // Касательный вектор
|
|||||||
in vec3 B; // Бикасательный вектор
|
in vec3 B; // Бикасательный вектор
|
||||||
in vec3 view; // Вектор от поверхности к камере
|
in vec3 view; // Вектор от поверхности к камере
|
||||||
|
|
||||||
uniform sampler2D tex_diffuse;
|
uniform sampler2D tex_albedo;
|
||||||
uniform sampler2D tex_ambient;
|
uniform sampler2D tex_roughness;
|
||||||
|
uniform sampler2D tex_metallic;
|
||||||
uniform sampler2D tex_specular;
|
uniform sampler2D tex_specular;
|
||||||
|
uniform sampler2D tex_emitted;
|
||||||
uniform sampler2D tex_heights;
|
uniform sampler2D tex_heights;
|
||||||
uniform sampler2D tex_normal;
|
uniform sampler2D tex_normal;
|
||||||
|
|
||||||
@ -98,14 +102,16 @@ void main()
|
|||||||
gNormal = normalize(TBN * gNormal); // Из касательного пространства в мировые координаты
|
gNormal = normalize(TBN * gNormal); // Из касательного пространства в мировые координаты
|
||||||
}
|
}
|
||||||
|
|
||||||
// Сохранение диффузного цвета
|
// Сохранение базового цвета
|
||||||
gDiffuseP.rgb = texture(tex_diffuse, new_texCoord).rgb * kd;
|
gBaseColor.rgb = base_color.r<0?texture(tex_albedo, new_texCoord).rgb:base_color;
|
||||||
// Сохранение глянцевости
|
// Сохранение шероховатости
|
||||||
gDiffuseP.a = p;
|
gRMS.r = roughness<0?texture(tex_roughness, new_texCoord).r:roughness;
|
||||||
// Сохранение фоновой составляющей
|
// Сохранение металличности
|
||||||
gAmbientSpecular.rgb = texture(tex_ambient, new_texCoord).rgb * ka;
|
gRMS.g = metallic<0?texture(tex_metallic, new_texCoord).r:metallic;
|
||||||
// Сохранение зеркальной составляющей
|
// Сохранение интенсивности блика диэлектриков
|
||||||
gAmbientSpecular.a = texture(tex_specular, new_texCoord).r * ks.r;
|
gRMS.b = specular<0?texture(tex_specular, new_texCoord).r:specular;
|
||||||
// Сохранение идентификатора объекта
|
// Сохранение идентификатора объекта
|
||||||
gID = ID;
|
gID = ID;
|
||||||
|
// Сохранение излучаемого света
|
||||||
|
gEmittedColor.rgb = emitted.r<0?texture(tex_emitted, new_texCoord).rgb:emitted;
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user