1
0
Fork 0

Compare commits

..

No commits in common. "f7e1b3eab9976cdce081e9b199b09e2e38245ad5" and "9678e8c286e9cea11de67cf7ea70391a39af14f9" have entirely different histories.

4 changed files with 5 additions and 58 deletions

View file

@ -27,22 +27,6 @@ else ()
ImGui-SFML::ImGui-SFML) ImGui-SFML::ImGui-SFML)
endif() endif()
if(TRACE_FRAMES)
message("Building with Tracy")
add_compile_definitions(TRACE_FRAMES)
include(FetchContent)
FetchContent_Declare(
Tracy
GIT_REPOSITORY https://github.com/wolfpld/tracy.git
GIT_TAG d46ffb4e9f132fc95bdd7d04207d8d669a9d4100
)
FetchContent_MakeAvailable(Tracy)
set(LIBS ${LIBS}
TracyClient)
endif()
add_compile_options(-Wall -Wextra) add_compile_options(-Wall -Wextra)
add_executable(raycasting add_executable(raycasting

View file

@ -1,24 +0,0 @@
//
// Created by trotfunky on 05/02/24.
//
#ifndef RAYCASTING_FRAMETRACING_H
#define RAYCASTING_FRAMETRACING_H
/*
* Basic wrapper to allow enabling and disabling frame tracing using
* Tracy.
* https://github.com/wolfpld/tracy
*/
#ifdef TRACE_FRAMES
#include "tracy/Tracy.hpp"
#define FTrace_FrameMark FrameMark
#define FTrace_Scope ZoneScoped
#define FTrace_NamedScope(name) ZoneScopedN(name)
#else
#define FTrace_FrameMark
#define FTrace_Scope
#define FTrace_NamedScope(name)
#endif /* TRACE_FRAMES */
#endif //RAYCASTING_FRAMETRACING_H

View file

@ -9,7 +9,6 @@
#include <imgui.h> #include <imgui.h>
#include <imgui-SFML.h> #include <imgui-SFML.h>
#endif #endif
#include "FrameTracing.h"
World::World(int w, int h, sf::Color groundColor, sf::Color ceilingColor, std::vector<BlockType> worldMap) : World::World(int w, int h, sf::Color groundColor, sf::Color ceilingColor, std::vector<BlockType> worldMap) :
player(0,0,0), w(w), h(h), map(std::move(worldMap)), player(0,0,0), w(w), h(h), map(std::move(worldMap)),
@ -118,7 +117,6 @@ RaycastResult World::castRay(float originX, float originY, float orientation) co
* built around left-handed axes (x,y), so the rendered world is * built around left-handed axes (x,y), so the rendered world is
* mirrored. This also explains some weird signs for rotations. * mirrored. This also explains some weird signs for rotations.
*/ */
FTrace_Scope;
/* Offsets to get back on the grid from the ray's origin. */ /* Offsets to get back on the grid from the ray's origin. */
float hOffsetX; float hOffsetX;
float hOffsetY; float hOffsetY;
@ -179,12 +177,10 @@ RaycastResult World::castRay(float originX, float originY, float orientation) co
int i = 0; int i = 0;
float hCheckX = originX + hOffsetX; float hCheckX = originX + hOffsetX;
float hCheckY = hOffsetY; float hCheckY = hOffsetY;
BlockType hHitBlock = BlockType::AIR;
/* Bounds + sanity check. */ /* Bounds + sanity check. */
while (hCheckX >= 0 && hCheckX <= static_cast<float>(w) && while (hCheckX >= 0 && hCheckX <= static_cast<float>(w) &&
hCheckY >= 0 && hCheckY <= static_cast<float>(h) && i < h) { hCheckY >= 0 && hCheckY <= static_cast<float>(h) && i < h) {
hHitBlock = getBlock(floorf(hCheckX), floorf(hCheckY) + hRound); if (getBlock(floorf(hCheckX), floorf(hCheckY) + hRound) == BlockType::WALL) {
if (hHitBlock == BlockType::WALL) {
break; break;
} }
@ -196,12 +192,11 @@ RaycastResult World::castRay(float originX, float originY, float orientation) co
i = 0; i = 0;
float vCheckX = vOffsetX; float vCheckX = vOffsetX;
float vCheckY = originY + vOffsetY; float vCheckY = originY + vOffsetY;
BlockType vHitBlock = BlockType::AIR;
/* Bounds + sanity check. */ /* Bounds + sanity check. */
while (vCheckX >= 0 && vCheckX < static_cast<float>(w) && while (vCheckX >= 0 && vCheckX < static_cast<float>(w) &&
vCheckY >= 0 && vCheckY < static_cast<float>(h) && i < w) { vCheckY >= 0 && vCheckY < static_cast<float>(h) && i < w) {
vHitBlock = getBlock(floorf(vCheckX) + vRound, floorf(vCheckY)); if (getBlock(floorf(vCheckX) + vRound, floorf(vCheckY)) == BlockType::WALL) {
if (vHitBlock == BlockType::WALL) {
break; break;
} }
@ -225,13 +220,13 @@ RaycastResult World::castRay(float originX, float originY, float orientation) co
result.distance = vDist; result.distance = vDist;
result.hitX = vCheckX; result.hitX = vCheckX;
result.hitY = vCheckY; result.hitY = vCheckY;
result.hitBlock = vHitBlock;
} else { } else {
result.distance = hDist; result.distance = hDist;
result.hitX = hCheckX; result.hitX = hCheckX;
result.hitY = hCheckY; result.hitY = hCheckY;
result.hitBlock = hHitBlock;
} }
result.hitBlock = getBlock(floorf(result.hitX) + vRound,
floorf(result.hitY));
return result; return result;
} }
@ -239,7 +234,6 @@ RaycastResult World::castRay(float originX, float originY, float orientation) co
void World::fillColumn(sf::RenderWindow& window, unsigned int column, void World::fillColumn(sf::RenderWindow& window, unsigned int column,
float scale, sf::Color fillColor) float scale, sf::Color fillColor)
{ {
FTrace_Scope;
float columnHeight = static_cast<float>(window.getSize().y)*scale; float columnHeight = static_cast<float>(window.getSize().y)*scale;
sf::RectangleShape& pixelColumn = renderColumns[column]; sf::RectangleShape& pixelColumn = renderColumns[column];
if (pixelColumn.getSize().y != columnHeight) { if (pixelColumn.getSize().y != columnHeight) {
@ -255,7 +249,6 @@ void World::fillColumn(sf::RenderWindow& window, unsigned int column,
void World::render(sf::RenderWindow& window) void World::render(sf::RenderWindow& window)
{ {
FTrace_Scope;
float windowX = static_cast<float>(window.getSize().x); float windowX = static_cast<float>(window.getSize().x);
float windowY = static_cast<float>(window.getSize().y); float windowY = static_cast<float>(window.getSize().y);
/* /*
@ -298,7 +291,6 @@ void World::render(sf::RenderWindow& window)
} }
void World::step(const float& stepTime) { void World::step(const float& stepTime) {
FTrace_Scope;
player.move(player.currentMoveSpeedX*stepTime, player.move(player.currentMoveSpeedX*stepTime,
player.currentMoveSpeedY*stepTime); player.currentMoveSpeedY*stepTime);
/* Undo last move if the player would end up in a wall. */ /* Undo last move if the player would end up in a wall. */

View file

@ -5,7 +5,6 @@
#include <imgui.h> #include <imgui.h>
#include <imgui-SFML.h> #include <imgui-SFML.h>
#endif #endif
#include "FrameTracing.h"
#include "World.h" #include "World.h"
@ -38,11 +37,8 @@ int main()
sf::Clock frameTime; sf::Clock frameTime;
while (window.isOpen()) while (window.isOpen())
{ {
FTrace_NamedScope("MainLoop");
while (window.pollEvent(event)) while (window.pollEvent(event))
{ {
FTrace_NamedScope("EventLoop");
if (event.type == sf::Event::Closed) { if (event.type == sf::Event::Closed) {
window.close(); window.close();
continue; continue;
@ -139,7 +135,6 @@ int main()
#endif #endif
window.display(); window.display();
FTrace_FrameMark;
} }
#ifdef IMGUI #ifdef IMGUI