#pragma once #ifndef REAL_BUILD # define REAL_BUILD # include "externals.hh" # include "texture.hh" # include "rendertarget.hh" # include "utilities.hh" # include "programs.hh" # undef REAL_BUILD #endif struct T_Raymarcher { public: T_Raymarcher( ) = delete; T_Raymarcher( T_Raymarcher const& ) = delete; T_Raymarcher( T_Raymarcher&& ) = delete; T_Raymarcher( __rw__ T_FilesWatcher& watcher , __rd__ const uint32_t width , __rd__ const uint32_t height ); void render( ); void makeUI( ); T_Camera const& camera( ) const noexcept { return camera_; } T_Camera& camera( ) noexcept { return camera_; } T_Texture& output( ) noexcept { return txOutput_; } T_Texture& depth( ) noexcept { return txDepth_; } private: T_Camera camera_; GLuint pipeline_; T_ShaderProgram program_; T_Texture txOutput_ , txDepth_; T_Rendertarget rtOutput_; int rmIterations = 128; float rmStep = .9; float rmEpsilon = .000001; float rmMaxDist = 50; float epsLog = log( rmEpsilon ) / log( 10 ); };