diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2023-08-29 23:38:40 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2023-08-30 18:22:56 +0200 |
commit | af6ca21ed0f2715aad0b2ae80d200589b5e31089 (patch) | |
tree | 51a51a4f4a487d29439be597e674d6c8ac58c498 /shaders/lightmap.cpp | |
parent | dbffcdc7db183ae3f1c938e8d84f4a0a11c6c122 (diff) |
wip
Diffstat (limited to 'shaders/lightmap.cpp')
-rw-r--r-- | shaders/lightmap.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/shaders/lightmap.cpp b/shaders/lightmap.cpp index 44df7500..7c943686 100644 --- a/shaders/lightmap.cpp +++ b/shaders/lightmap.cpp @@ -217,6 +217,9 @@ std::array<UnsignedShort, 6> lightmap_shader::quad_indexes(size_t N) void lightmap_shader::add_light(Vector2 neighbor_offset, const light_s& light) { + // todo finish uniform interface block + // NOTE, go benchjmark case where the main inteface block doesn't need to be uploaded ijn given frame. + neighbor_offset += Vector2((float)half_neighbors); constexpr auto tile_size = TILE_SIZE2.sum()/2; @@ -240,14 +243,11 @@ void lightmap_shader::add_light(Vector2 neighbor_offset, const light_s& light) auto center_fragcoord = light.center + neighbor_offset * chunk_size + chunk_offset; // window-relative coordinates auto center_clip = clip_start + center_fragcoord * clip_scale; // clip coordinates - float alpha = light.color.a() / 255.f; - auto color = (Vector3{light.color.rgb()} / 255.f) * alpha; - framebuffer.fb.mapForDraw({ { 0u, GL::Framebuffer::ColorAttachment{0} }, }); - setUniform(LightColorUniform, color * alpha); + setUniform(LightColorUniform, Vector4(light.color) / 255.f); setUniform(SizeUniform, Vector2(1) / real_image_size); setUniform(CenterFragcoordUniform, center_fragcoord * image_size_ratio); setUniform(CenterClipUniform, center_clip); @@ -264,7 +264,6 @@ void lightmap_shader::add_light(Vector2 neighbor_offset, const light_s& light) mesh_view.setCount((int32_t)count*6); AbstractShaderProgram::draw(mesh_view); - setUniform(SamplerUniform, tuc.bind(framebuffer.scratch)); framebuffer.fb.mapForDraw({ { 1u, GL::Framebuffer::ColorAttachment{1} }, }); @@ -280,6 +279,7 @@ void lightmap_shader::bind() using BlendFunction = Magnum::GL::Renderer::BlendFunction; GL::Renderer::setBlendFunction(0, BlendFunction::One, BlendFunction::Zero); GL::Renderer::setBlendFunction(1, BlendFunction::One, BlendFunction::One); + setUniform(SamplerUniform, tuc.bind(framebuffer.scratch)); } void lightmap_shader::finish() // NOLINT(*-convert-member-functions-to-static) |