@@ -131,6 +131,7 @@ namespace stormkit::engine {
131131 .input_assembly_state = { gpu::PrimitiveTopology::TRIANGLE_STRIP },
132132 .viewport_state = { .viewports = { window_viewport },
133133 .scissors = { scissor }, },
134+ .rasterization_state = { .cull_mode = gpu::CullModeFlag::NONE, },
134135 .color_blend_state = { .attachments = { { .blend_enable = true ,
135136 .src_color_blend_factor = gpu::BlendFactor::SRC_ALPHA,
136137 .dst_color_blend_factor = gpu::BlendFactor::ONE_MINUS_SRC_ALPHA,
@@ -142,14 +143,15 @@ namespace stormkit::engine {
142143 .binding_descriptions = SPRITE_VERTEX_BINDING_DESCRIPTIONS | stdr::to<std::vector>(),
143144 .input_attribute_descriptions = SPRITE_VERTEX_ATTRIBUTE_DESCRIPTIONS | stdr::to<std::vector>(),
144145 },
145- };
146+ }; // namespace stormkit::engine
146147
147148 m_render_data.descriptor_set_layout = Try (gpu::DescriptorSetLayout::create (
148149 device,
149150 into_dyn_array<
150151 gpu::DescriptorSetLayoutBinding>(Camera::layout_binding ()
151152 // gpu::DescriptorSetLayoutBinding {
152- // 1, gpu::DescriptorType::COMBINED_IMAGE_SAMPLER,
153+ // 1,
154+ // gpu::DescriptorType::COMBINED_IMAGE_SAMPLER,
153155 // gpu::ShaderStageFlag::FRAGMENT,
154156 // 1 }
155157 )));
@@ -171,10 +173,27 @@ namespace stormkit::engine {
171173 m_render_data
172174 .camera_descriptor_set = Try (m_render_data.descriptor_pool ->create_descriptor_set (m_render_data.descriptor_set_layout ));
173175
174- m_camera.projection = math::orthographique (window_viewport.position .x ,
175- window_viewport.extent .width ,
176- window_viewport.position .y ,
177- window_viewport.extent .height );
176+ const auto ortho = [](auto & out, f32 left, f32 right, f32 bottom, f32 top) {
177+ out = math::fmat4::identity ();
178+
179+ out[0 , 0 ] = f32 { 2 } / (right - left);
180+ out[1 , 1 ] = f32 { 2 } / (top - bottom);
181+ out[2 , 2 ] = -f32 { 1 };
182+
183+ out[0 , 3 ] = -(right + left) / (right - left);
184+ out[1 , 3 ] = -(top + bottom) / (top - bottom);
185+ out[2 , 3 ] = -f32 { 1 };
186+ };
187+
188+ ortho (m_camera.projection ,
189+ window_viewport.position .x ,
190+ window_viewport.extent .width ,
191+ window_viewport.position .y ,
192+ window_viewport.extent .height );
193+ // m_camera.projection = math::orthographique(window_viewport.position.x,
194+ // window_viewport.extent.width,
195+ // window_viewport.position.y,
196+ // window_viewport.extent.height);
178197 std::println (" {}" , m_camera.projection );
179198 Return {};
180199 }
@@ -276,8 +295,8 @@ namespace stormkit::engine {
276295
277296 std::array<SpriteVertex, 4 > vertices = {
278297 SpriteVertex { { 0 .f , 0 .f }, { 0 .f , 0 .f } },
279- SpriteVertex { { 0 .f , 100 .f }, { 0 .f , 1 .f } },
280298 SpriteVertex { { 100 .f , 0 .f }, { 1 .f , 0 .f } },
299+ SpriteVertex { { 0 .f , 100 .f }, { 0 .f , 1 .f } },
281300 SpriteVertex { { 100 .f , 100 .f }, { 1 .f , 1 .f } },
282301 };
283302 vertex_staging_buffer.upload (as_bytes (vertices));
@@ -287,7 +306,10 @@ namespace stormkit::engine {
287306 auto & camera_staging_buffer = frame_resources.get_buffer (data.camera_staging_buffer_id );
288307 const auto & camera_buffer = frame_resources.get_buffer (data.camera_buffer_id );
289308
290- camera_staging_buffer.upload (as_bytes (m_camera));
309+ auto camera = auto (m_camera);
310+ camera.projection = math::transpose (camera.projection );
311+ camera.view = math::transpose (camera.view );
312+ camera_staging_buffer.upload (as_bytes (camera));
291313
292314 cmb.copy_buffer (camera_staging_buffer, camera_buffer, sizeof (Camera));
293315 });
0 commit comments