Skip to content

Commit c87af7b

Browse files
committed
misc: tweaks
1 parent d573995 commit c87af7b

File tree

6 files changed

+54
-55
lines changed

6 files changed

+54
-55
lines changed

shaders/final.fsh

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ vec3 get_sky_color(vec3 dir) {
256256
vec3 bitangent = cross(tangent, -u_sunlight_dir);
257257
vec3 local = vec3(dot(dir, tangent), dot(dir, bitangent), dot(dir, -u_sunlight_dir));
258258
if (abs(local.x) < 0.03 && abs(local.y) < 0.03 && local.z > 0.0) {
259-
return vec3(3.5, 3.0, 2.9) * 10.0;
259+
return vec3(3.5, 3.0, 2.9) * 2.0;
260260
}
261261
return mix(
262262
vec3(1.2, 1.6, 2.0),
@@ -306,7 +306,7 @@ vec3 fresnelSchlick(float cosTheta, vec3 F0)
306306
return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0);
307307
}
308308

309-
vec3 brdf(vec3 normal, vec3 viewDir, vec3 lightDir, vec3 lightRadiance, vec3 albedo, float metallic, float roughness, vec3 ambient)
309+
vec3 brdf(vec3 normal, vec3 viewDir, vec3 lightDir, vec3 lightRadiance, vec3 ambientRadiance, vec3 albedo, float metallic, float roughness)
310310
{
311311
vec3 N = normalize(normal);
312312
vec3 V = -normalize(viewDir);
@@ -338,8 +338,7 @@ vec3 brdf(vec3 normal, vec3 viewDir, vec3 lightDir, vec3 lightRadiance, vec3 alb
338338
float NdotL = max(dot(N, L), 0.0);
339339
Lo += (kD * albedo / PI + specular) * lightRadiance * NdotL;
340340

341-
vec3 color = ambient * albedo + Lo;
342-
341+
vec3 color = ambientRadiance * albedo + Lo;
343342
return color;
344343
}
345344
// ================================ END TEMPORARY ================================
@@ -363,21 +362,20 @@ vec4 diffuse(vec2 tex_coord) {
363362

364363
vec3 albedo = color.rgb;
365364
float metallic = 0.0;
366-
float roughness = 0.75;
367-
vec3 sunlight_radiance = 2.0 * vec3(3.5, 3.0, 2.9);
368-
vec3 ambient = 0.5 * vec3(0.4, 0.5, 0.8);
365+
float roughness = 0.8;
366+
vec3 sunlight_radiance = vec3(3.5, 3.0, 2.9) * 2.0;
367+
vec3 ambient_radiance = vec3(0.18, 0.25, 0.5);
369368

370369
if (block_id == WATER_ID) {
371-
roughness = 0.0;
372370
sunlight_radiance = vec3(0.0);
373371
} else {
374372
sunlight_radiance *= calc_sunlight_radiance_factor(shadow_coord, normal);
375-
ambient *= calc_ambient_factor(shadow_coord, normal);
373+
ambient_radiance *= calc_ambient_factor(shadow_coord, normal);
376374
}
377375

378376
// if (block_id == GLOWSTONE_ID) glow = 5.0;
379377

380-
return vec4(brdf(normal, world_space_coord - translation, u_sunlight_dir, sunlight_radiance, albedo, metallic, roughness, ambient), color.a);
378+
return vec4(brdf(normal, world_space_coord - translation, u_sunlight_dir, sunlight_radiance, ambient_radiance, albedo, metallic, roughness), color.a);
381379
}
382380

383381
vec4 diffuse_with_fog(vec2 tex_coord) {
@@ -539,7 +537,7 @@ vec4 cloud(vec3 org, vec3 dir, float dist, vec3 center, float quality) {
539537
scattering *= pow(1.0 - calc_cloud_opacity(curr - u_sunlight_dir * 16.0), 8.0);
540538
// scattering *= pow(1.0 - calc_cloud_opacity(curr - u_sunlight_dir * 32.0), 16.0);
541539
// scattering *= pow(1.0 - calc_cloud_opacity(curr - u_sunlight_dir * 64.0), 32.0);
542-
vec3 col = vec3(3.5, 3.0, 2.9) * scattering + vec3(0.35, 0.5, 1.0) * 0.5;
540+
vec3 col = vec3(3.5, 3.0, 2.9) * scattering + vec3(0.18, 0.25, 0.5) * (1.0 - scattering);
543541
res += remaining * (1.0 - transmittence) * col;
544542
remaining *= transmittence;
545543
}
@@ -624,16 +622,19 @@ void main() {
624622
color = blend(cloud(view_origin, view_dir, dist, view_origin, 1.0), color);
625623
#endif
626624

625+
// Exposure
626+
color *= 0.6;
627+
627628
// Component-wise tone mapping
628629
// color = color / (color + vec3(1.0)); // Reinhard tone mapping
629-
// color = vec3(1.0) - exp(-color * 0.8); // Exposure tone mapping
630-
color = aces(color * 0.5);
630+
// color = vec3(1.0) - exp(-color); // Exposure tone mapping
631+
color = aces(color);
631632

632633
// Luminance-based tone mapping
633634
// float luminance = color.r * 0.2125 + color.g * 0.7154 + color.b * 0.0721;
634635
// color /= luminance;
635636
// luminance = luminance / (luminance + 1.0); // Reinhard tone mapping
636-
// luminance = 1.0 - exp(-luminance * 0.8); // Exposure tone mapping
637+
// luminance = 1.0 - exp(-luminance); // Exposure tone mapping
637638
// color *= luminance;
638639

639640
o_frag_color = vec4(color, 1.0);

shaders/opaque.fsh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ void main() {
2626
texel.a = 1.0;
2727

2828
vec3 normal_texel = texture(u_normal, tex_coord.stp).rgb * 2.0 - vec3(1.0);
29-
normal_texel.y *= -1.0;
3029
mat3 tbn = mat3(normalize(tangent), normalize(bitangent), normalize(cross(tangent, bitangent)));
3130
vec3 normal = tbn * normalize(normal_texel);
3231

shaders/translucent.fsh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ void main() {
2828
if (block_id == WATER_ID || block_id == ICE_ID) texel.a = 0.02;
2929

3030
vec3 normal_texel = texture(u_normal, tex_coord.stp).rgb * 2.0 - vec3(1.0);
31-
normal_texel.y *= -1.0;
3231
mat3 tbn = mat3(normalize(tangent), normalize(bitangent), normalize(cross(tangent, bitangent)));
3332
vec3 normal = tbn * normalize(normal_texel);
3433

src/neworld.ixx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ void game_update(worlds::World& world) {
371371
float(rnd() * 0.2f - 0.1f),
372372
float(rnd() * 0.2f - 0.1f),
373373
float(rnd() * 0.2f - 0.1f),
374-
float(rnd() * 0.01f + 0.02f),
374+
float(rnd() * 0.02f + 0.05f),
375375
int(rnd() * 30) + 30
376376
);
377377

@@ -396,7 +396,7 @@ void game_update(worlds::World& world) {
396396
float(rnd() * 0.2f - 0.1f),
397397
float(rnd() * 0.2f - 0.1f),
398398
float(rnd() * 0.2f - 0.1f),
399-
float(rnd() * 0.02 + 0.03),
399+
float(rnd() * 0.02f + 0.05f),
400400
int(rnd() * 60) + 30
401401
);
402402
}

src/particles.ixx

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -13,42 +13,6 @@ namespace spec = render::attrib_layout::spec;
1313
using render::VertexArray;
1414
using AttribIndexBuilder = decltype(Renderer::chunk_vertex_builder());
1515

16-
constexpr auto coords = std::array<std::array<Vec3f, 4>, 6>({
17-
{{{1.0f, 0.0f, 1.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {1.0f, 1.0f, 1.0f}}}, // Right
18-
{{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 1.0f}, {0.0f, 1.0f, 1.0f}, {0.0f, 1.0f, 0.0f}}}, // Left
19-
{{{0.0f, 1.0f, 1.0f}, {1.0f, 1.0f, 1.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Top
20-
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 1.0f}}}, // Bottom
21-
{{{0.0f, 0.0f, 1.0f}, {1.0f, 0.0f, 1.0f}, {1.0f, 1.0f, 1.0f}, {0.0f, 1.0f, 1.0f}}}, // Front
22-
{{{1.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f, 0.0f}}}, // Back
23-
});
24-
25-
constexpr auto tex_coords = std::array<std::array<Vec3f, 4>, 6>({
26-
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Right
27-
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Left
28-
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Top
29-
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Bottom
30-
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Front
31-
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Back
32-
});
33-
34-
constexpr auto tangents = std::array<Vec3i8, 6>({
35-
{ 0, 0, -1}, // Right
36-
{ 0, 0, +1}, // Left
37-
{+1, 0, 0}, // Top
38-
{+1, 0, 0}, // Bottom
39-
{+1, 0, 0}, // Front
40-
{-1, 0, 0}, // Back
41-
});
42-
43-
constexpr auto bitangents = std::array<Vec3i8, 6>({
44-
{0, +1, 0}, // Right
45-
{0, +1, 0}, // Left
46-
{0, 0, -1}, // Top
47-
{0, 0, +1}, // Bottom
48-
{0, +1, 0}, // Front
49-
{0, +1, 0}, // Back
50-
});
51-
5216
export namespace particles {
5317

5418
struct Particle {
@@ -73,7 +37,7 @@ void update(worlds::World& world, Particle& ptc) {
7337
velocity.y() -= 0.03;
7438
auto velocity_original = velocity;
7539

76-
auto particle_box = AABB3d(position - ptc.psize, position + ptc.psize);
40+
auto particle_box = AABB3d(position, position + ptc.psize);
7741
velocity = particle_box.clip_displacement(world.hitboxes(particle_box.extend(velocity)), velocity);
7842
position += velocity;
7943

@@ -97,6 +61,42 @@ void update_all(worlds::World& world) {
9761
}
9862

9963
void mesh(worlds::World& world, Particle const& ptc, double interp, AttribIndexBuilder& v) {
64+
constexpr auto coords = std::array<std::array<Vec3f, 4>, 6>({
65+
{{{1.0f, 0.0f, 1.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {1.0f, 1.0f, 1.0f}}}, // Right
66+
{{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 1.0f}, {0.0f, 1.0f, 1.0f}, {0.0f, 1.0f, 0.0f}}}, // Left
67+
{{{0.0f, 1.0f, 1.0f}, {1.0f, 1.0f, 1.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Top
68+
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 1.0f}}}, // Bottom
69+
{{{0.0f, 0.0f, 1.0f}, {1.0f, 0.0f, 1.0f}, {1.0f, 1.0f, 1.0f}, {0.0f, 1.0f, 1.0f}}}, // Front
70+
{{{1.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f, 0.0f}}}, // Back
71+
});
72+
73+
constexpr auto tex_coords = std::array<std::array<Vec3f, 4>, 6>({
74+
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Right
75+
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Left
76+
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Top
77+
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Bottom
78+
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Front
79+
{{{0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}}}, // Back
80+
});
81+
82+
constexpr auto tangents = std::array<Vec3i8, 6>({
83+
{ 0, 0, -1}, // Right
84+
{ 0, 0, +1}, // Left
85+
{+1, 0, 0}, // Top
86+
{+1, 0, 0}, // Bottom
87+
{+1, 0, 0}, // Front
88+
{-1, 0, 0}, // Back
89+
});
90+
91+
constexpr auto bitangents = std::array<Vec3i8, 6>({
92+
{0, +1, 0}, // Right
93+
{0, +1, 0}, // Left
94+
{0, 0, -1}, // Top
95+
{0, 0, +1}, // Bottom
96+
{0, +1, 0}, // Front
97+
{0, +1, 0}, // Back
98+
});
99+
100100
auto psize = static_cast<float>(ptc.psize);
101101
auto bl = ptc.bl.get();
102102
auto tex = static_cast<float>(ptc.tex);

textures/blocks/normal.png

-1.16 KB
Loading

0 commit comments

Comments
 (0)