Переделка шейдера геометрического прохода отложенного рендера

This commit is contained in:
Ковалев Роман Евгеньевич 2023-06-13 15:08:21 +03:00 committed by re.kovalev
parent fc83187724
commit fcf78bdc0c
2 changed files with 27 additions and 20 deletions

View File

@ -2,10 +2,11 @@
layout(std140, binding = 1) uniform Material
{
vec3 ka;
vec3 kd;
vec3 ks;
float p;
vec3 base_color;
float roughness;
float metallic;
float specular;
vec3 emitted;
bool normalmapped;
bool parallaxmapped;
bool displacementmapped;
@ -13,9 +14,10 @@ layout(std140, binding = 1) uniform Material
layout (location = 0) out vec3 gPosition;
layout (location = 1) out vec3 gNormal;
layout (location = 2) out vec4 gDiffuseP;
layout (location = 3) out vec4 gAmbientSpecular;
layout (location = 2) out vec3 gBaseColor;
layout (location = 3) out vec3 gRMS;
layout (location = 4) out uvec3 gID;
layout (location = 5) out vec3 gEmittedColor;
in vec3 vertex; // Позиция вершины в пространстве
in vec3 N; // Нормаль трансформированноая
@ -24,9 +26,11 @@ in vec3 T; // Касательный вектор
in vec3 B; // Бикасательный вектор
in vec3 view; // Вектор от поверхности к камере
uniform sampler2D tex_diffuse;
uniform sampler2D tex_ambient;
uniform sampler2D tex_albedo;
uniform sampler2D tex_roughness;
uniform sampler2D tex_metallic;
uniform sampler2D tex_specular;
uniform sampler2D tex_emitted;
uniform sampler2D tex_heights;
uniform sampler2D tex_normal;
@ -98,14 +102,16 @@ void main()
gNormal = normalize(TBN * gNormal); // Из касательного пространства в мировые координаты
}
// Сохранение диффузного цвета
gDiffuseP.rgb = texture(tex_diffuse, new_texCoord).rgb * kd;
// Сохранение глянцевости
gDiffuseP.a = p;
// Сохранение фоновой составляющей
gAmbientSpecular.rgb = texture(tex_ambient, new_texCoord).rgb * ka;
// Сохранение зеркальной составляющей
gAmbientSpecular.a = texture(tex_specular, new_texCoord).r * ks.r;
// Сохранение базового цвета
gBaseColor.rgb = base_color.r<0?texture(tex_albedo, new_texCoord).rgb:base_color;
// Сохранение шероховатости
gRMS.r = roughness<0?texture(tex_roughness, new_texCoord).r:roughness;
// Сохранение металличности
gRMS.g = metallic<0?texture(tex_metallic, new_texCoord).r:metallic;
// Сохранение интенсивности блика диэлектриков
gRMS.b = specular<0?texture(tex_specular, new_texCoord).r:specular;
// Сохранение идентификатора объекта
gID = ID;
// Сохранение излучаемого света
gEmittedColor.rgb = emitted.r<0?texture(tex_emitted, new_texCoord).rgb:emitted;
}

View File

@ -15,10 +15,11 @@ layout(std140, binding = 0) uniform Camera
layout(std140, binding = 1) uniform Material
{
vec3 ka;
vec3 kd;
vec3 ks;
float p;
vec3 base_color;
float roughness;
float metallic;
float specular;
vec3 emitted;
bool normalmapped;
bool parallaxmapped;
bool displacementmapped;