From 250044b47a05254a28f69fcaafddc37f85490735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Mon, 13 Sep 2021 23:35:56 +0200 Subject: [PATCH] Update main.cpp --- examples/PhysicsDemo/main.cpp | 65 +++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 6 deletions(-) diff --git a/examples/PhysicsDemo/main.cpp b/examples/PhysicsDemo/main.cpp index e412cc721..658fc5991 100644 --- a/examples/PhysicsDemo/main.cpp +++ b/examples/PhysicsDemo/main.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -75,7 +76,7 @@ int main() materialPass->EnableDepthClamp(true); materialPass->EnableFaceCulling(true); - material->AddPass("DepthPass", depthPass); + //material->AddPass("DepthPass", depthPass); material->AddPass("ForwardPass", materialPass); Nz::TextureSamplerInfo samplerInfo; @@ -98,17 +99,67 @@ int main() for (std::size_t i = 0; i < model->GetSubMeshCount(); ++i) model->SetMaterial(i, material); + std::shared_ptr spriteMaterial = std::make_shared(); + + /*std::shared_ptr spriteDepthPass = std::make_shared(Nz::DepthMaterial::GetSettings()); + spriteDepthPass->EnableDepthBuffer(true); + spriteDepthPass->EnableDepthClamp(true); + //spriteDepthPass->EnableFaceCulling(true);*/ + + std::shared_ptr spriteMaterialPass = std::make_shared(Nz::BasicMaterial::GetSettings()); + spriteMaterialPass->EnableDepthBuffer(true); + spriteMaterialPass->EnableDepthWrite(false); + spriteMaterialPass->EnableDepthClamp(true); + //spriteMaterialPass->EnableFaceCulling(true); + + spriteMaterialPass->EnableFlag(Nz::MaterialPassFlag::Transparent); + + spriteMaterialPass->EnableBlending(true); + spriteMaterialPass->SetBlendEquation(Nz::BlendEquation::Add, Nz::BlendEquation::Add); + spriteMaterialPass->SetBlendFunc(Nz::BlendFunc::SrcAlpha, Nz::BlendFunc::InvSrcAlpha, Nz::BlendFunc::One, Nz::BlendFunc::Zero); + + //Nz::BasicMaterial basicSpriteMat(*spriteMaterialPass); + //basicSpriteMat.SetDiffuseMap(Nz::Texture::LoadFromFile(resourceDir / "dev_grey.png", texParams)); + + //spriteMaterial->AddPass("DepthPass", spriteDepthPass); + spriteMaterial->AddPass("ForwardPass", spriteMaterialPass); + + std::shared_ptr sprite = std::make_shared(spriteMaterial); + + std::u32string str = Nz::ToUtf32String("Dès Noël, où un zéphyr haï me vêt de glaçons würmiens, je dîne d’exquis rôtis de bœuf au kir, à l’aÿ d’âge mûr, &cætera"); + + Nz::RichTextDrawer richText; + unsigned int size = 16; + for (char32_t character : str) + { + richText.SetDefaultCharacterSize(size); + richText.AppendText(Nz::FromUtf32String(std::u32string_view(&character, 1))); + + size += 2; + } + + sprite->Update(richText, 0.02f); + Nz::Vector2ui windowSize = window.GetSize(); Nz::VertexMapper vertexMapper(*spaceshipMesh->GetSubMesh(0), Nz::BufferAccess::ReadOnly); Nz::SparsePtr vertices = vertexMapper.GetComponentPtr(Nz::VertexComponent::Position); - entt::registry registry; + entt::registry registry2D; Nz::Physics3DSystem physSytem(registry); Nz::RenderSystem renderSystem(registry); + Nz::RenderSystem renderSystem2D(registry2D); + entt::entity viewer2D = registry2D.create(); + registry2D.emplace(viewer2D); + registry2D.emplace(viewer2D, window.GetRenderTarget(), Nz::ProjectionType::Orthographic); + + entt::entity text2D = registry2D.create(); + + registry2D.emplace(text2D).AttachRenderable(sprite); + registry2D.emplace(text2D).SetPosition(Nz::Vector3f(0.f, 200.f, 0.f)); entt::entity viewer = registry.create(); registry.emplace(viewer); @@ -143,6 +194,7 @@ int main() { auto& entityGfx = registry.emplace(playerEntity); entityGfx.AttachRenderable(model); + entityGfx.AttachRenderable(sprite); auto& entityNode = registry.emplace(playerEntity); entityNode.SetPosition(Nz::Vector3f(12.5f, 0.f, 25.f)); @@ -156,19 +208,19 @@ int main() headingNode.SetParent(registry, playerEntity); } - registry.get(viewer).SetParent(registry, headingEntity); registry.get(viewer).SetPosition(Nz::Vector3f::Backward() * 2.5f + Nz::Vector3f::Up() * 1.f); - for (std::size_t x = 0; x < 10; ++x) + for (std::size_t x = 0; x < 1; ++x) { - for (std::size_t y = 0; y < 10; ++y) + for (std::size_t y = 0; y < 1; ++y) { - for (std::size_t z = 0; z < 10; ++z) + for (std::size_t z = 0; z < 1; ++z) { entt::entity entity = registry.create(); auto& entityGfx = registry.emplace(entity); entityGfx.AttachRenderable(model); + entityGfx.AttachRenderable(sprite); auto& entityNode = registry.emplace(entity); entityNode.SetPosition(Nz::Vector3f(x * 2.f, y * 1.5f, z * 2.f)); @@ -333,6 +385,7 @@ int main() continue; renderSystem.Render(registry, frame); + //renderSystem2D.Render(registry2D, frame); frame.Present();