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

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 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;
bool normalmapped; bool normalmapped;
bool parallaxmapped; bool parallaxmapped;
bool displacementmapped; bool displacementmapped;
@ -13,9 +14,10 @@ layout(std140, binding = 1) uniform Material
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; // Нормаль трансформированноая
@ -24,9 +26,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;
} }

View File

@ -15,10 +15,11 @@ layout(std140, binding = 0) uniform Camera
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;
bool normalmapped; bool normalmapped;
bool parallaxmapped; bool parallaxmapped;
bool displacementmapped; bool displacementmapped;