Deferred renderer: remove explicit diffuse material property
This commit is contained in:
parent
91650cb4ac
commit
82817304e2
2 changed files with 8 additions and 9 deletions
|
|
@ -38,7 +38,6 @@ namespace psemek::gfx
|
|||
bool blooming = false;
|
||||
bool casts_shadow = true;
|
||||
|
||||
float diffuse = 1.f;
|
||||
struct
|
||||
{
|
||||
// specular highlight is calculated as
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ R"(
|
|||
|
||||
uniform vec4 u_color;
|
||||
uniform sampler2D u_texture;
|
||||
uniform vec3 u_material;
|
||||
uniform vec2 u_material;
|
||||
uniform float u_max_intensity;
|
||||
|
||||
in vec3 position;
|
||||
|
|
@ -110,7 +110,7 @@ in vec3 normal;
|
|||
layout (location = 0) out vec3 out0;
|
||||
layout (location = 1) out vec4 out1;
|
||||
layout (location = 2) out uint out2;
|
||||
layout (location = 3) out vec3 out3;
|
||||
layout (location = 3) out vec2 out3;
|
||||
|
||||
uint pack_normal(vec3 n)
|
||||
{
|
||||
|
|
@ -390,7 +390,7 @@ void main()
|
|||
|
||||
vec3 position = texture(u_g0, texcoord).xyz;
|
||||
vec3 normal = unpack_normal(texture(u_g2, texcoord).r);
|
||||
vec3 material = texture(u_g3, texcoord).xyz;
|
||||
vec2 material = texture(u_g3, texcoord).xy;
|
||||
|
||||
vec3 view = normalize(u_camera_position - position);
|
||||
|
||||
|
|
@ -398,7 +398,7 @@ void main()
|
|||
|
||||
vec3 refl = 2.0 * normal * d - u_light_direction;
|
||||
|
||||
float l = max(0.0, d) * material.x + pow(max(0.0, dot(view, refl)), material.z) * material.y;
|
||||
float l = max(0.0, d) + pow(max(0.0, dot(view, refl)), material.y) * material.x;
|
||||
|
||||
vec3 color = l * albedo.rgb * u_light_color;
|
||||
|
||||
|
|
@ -447,7 +447,7 @@ void main()
|
|||
|
||||
vec3 position = texture(u_g0, texcoord).xyz;
|
||||
vec3 normal = unpack_normal(texture(u_g2, texcoord).r);
|
||||
vec3 material = texture(u_g3, texcoord).xyz;
|
||||
vec2 material = texture(u_g3, texcoord).xy;
|
||||
|
||||
vec3 view = normalize(u_camera_position - position);
|
||||
|
||||
|
|
@ -461,7 +461,7 @@ void main()
|
|||
|
||||
vec3 refl = 2.0 * normal * d - light_n;
|
||||
|
||||
float l = max(0.0, d) * material.x + pow(max(0.0, dot(view, refl)), material.z) * material.y;
|
||||
float l = max(0.0, d) + pow(max(0.0, dot(view, refl)), material.y) * material.x;
|
||||
|
||||
vec3 color = l * albedo.rgb * u_light_color / (u_light_attenuation.x + r * (u_light_attenuation.y + r * u_light_attenuation.z));
|
||||
|
||||
|
|
@ -985,7 +985,7 @@ void main()
|
|||
if (mask & O_POST_TRANSFORM)
|
||||
program["u_post_transform"] = *o.post_transform;
|
||||
|
||||
program["u_material"] = geom::vector<float, 3>{o.mat->diffuse, o.mat->specular.intensity, o.mat->specular.shininess};
|
||||
program["u_material"] = geom::vector<float, 2>{o.mat->specular.intensity, o.mat->specular.shininess};
|
||||
|
||||
o.mesh->draw();
|
||||
}
|
||||
|
|
@ -1007,7 +1007,7 @@ void main()
|
|||
{
|
||||
impl().g_buffer_texture[1].load<geom::vector<std::uint16_t, 4>>(buffer_size);
|
||||
impl().g_buffer_texture[2].load<gfx::integer<std::uint32_t>>(buffer_size);
|
||||
impl().g_buffer_texture[3].load<geom::vector<gfx::float16, 3>>(buffer_size);
|
||||
impl().g_buffer_texture[3].load<geom::vector<gfx::float16, 2>>(buffer_size);
|
||||
impl().g_buffer_depth.load<gfx::depth24_pixel>(buffer_size);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue