47 void RenderSecondScreen(
World* world,
class Image* colorTarget,
class Image* depthTarget,
48 uint32_t width, uint32_t height,
class Camera3D* cameraOverride =
nullptr,
49 int32_t targetScreen = -1,
50 bool drawAccumulatedDebugDraws =
true);
237 void GatherDrawData(
World* world);
238 void GatherLightData(
World* world);
239 bool PassesTargetScreenFilter(
Node* node,
World* world)
const;
240 void RenderDraws(
const std::vector<DrawData>& drawData);
241 void RenderDraws(
const std::vector<DrawData>& drawData,
PipelineConfig pipelineConfig);
245 int32_t OcclusionCullDraws(
const class OcclusionData& data, int32_t cell,
const uint32_t* visibleSet, std::vector<DrawData>& drawData);
246 bool IsDrawOcclusionVisible(
const class OcclusionData& data, int32_t cell,
const uint32_t* visibleSet,
const DrawData& draw)
const;
247 void DrawOcclusionDebug(
World* world,
const class OcclusionData* data, int32_t cell,
const uint32_t* visibleSet);
248 int32_t FrustumCullDraws(
const CameraFrustum& frustum, std::vector<DrawData>& drawData);
249 int32_t FrustumCullDraws(
const CameraFrustum& frustum, std::vector<DebugDraw>& drawData);
250 int32_t FrustumCullLights(
const CameraFrustum& frustum, std::vector<LightData>& lightData);
252 void RenderShadowCasters(
World* world);
253 void RenderSelectedGeometry(
World* world);
255 void UpdateDebugDraws();
262 bool mInitialized =
false;
264 std::vector<DrawData> mShadowDraws;
265 std::vector<DrawData> mOpaqueDraws;
266 std::vector<DrawData> mSimpleShadowDraws;
267 std::vector<DrawData> mPostShadowOpaqueDraws;
268 std::vector<DrawData> mTranslucentDraws;
269 std::vector<DrawData> mWireframeDraws;
270 std::vector<DrawData> mWidgetDraws;
272 std::vector<LightData> mLightData;
274 std::vector<DebugDraw> mDebugDraws;
275 std::vector<DebugDraw> mCollisionDraws;
278 struct CustomRenderPassEntry
284 std::vector<CustomRenderPassEntry> mCustomRenderPasses;
285 uint64_t mNextCustomRenderPassId = 1;
287 World* mCurrentWorld =
nullptr;
288 uint32_t mFrameIndex = 0;
289 uint32_t mScreenIndex = 0;
290 int32_t mTargetScreenFilter = -1;
291 uint32_t mFrameNumber = 0;
292 float mGlobalUiScale = 1.0f;
295 bool mFrustumCulling =
true;
296 bool mOcclusionCulling =
true;
297 bool mOcclusionPreview =
false;
298 int32_t mNumFrustumCulled = 0;
299 int32_t mNumOcclusionCulled = 0;
300 bool mEnableProxyRendering =
false;
301 bool mEnable3dRendering =
true;
302 bool mEnable2dRendering =
true;
303 bool mEnablePathTracing =
false;
304 bool mEnableLightFade =
false;
305 uint32_t mLightFadeLimit = 4;
306 float mLightFadeSpeed = 1.0f;
307 glm::vec4 mClearColor = {};
308 float mColorScale = 1.0f;
309 glm::vec4 mSelectedColor = { 0.2f, 0.1f, 1.0f, 0.6f };
310 float mSelectedCheckerSize = 8.0f;
313 uint32_t mRaysPerPixel = 4;
314 uint32_t mMaxBounces = 4;
315 bool mPathTraceAccumulate =
true;
316 glm::vec4 mSkyZenithColor = { 0.0f, 0.0f, 0.0f, 1.0f };
317 glm::vec4 mSkyHorizonColor = { 0.0f, 0.0f, 0.0f, 1.0f };
318 glm::vec4 mGroundColor = { 0.0f, 0.0f, 0.0f, 1.0f };
321 uint32_t mBakeRaysPerVertex = 4;
322 uint32_t mBakeMaxBounces = 4;
323 float mBakeShadowBias = 0.001f;
324 uint32_t mBakeIndirectIterations = 20;
325 uint32_t mBakeDiffuseDirectPasses = 2;
326 uint32_t mBakeDiffuseIndirectPasses = 2;
PostProcessPassId
Definition EngineTypes.h:185
DebugMode
Definition Enums.h:33
@ DEBUG_NONE
Definition Enums.h:34
BoundsDebugMode
Definition Enums.h:41
PipelineConfig
Definition GraphicsTypes.h:66
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition CameraFrustum.h:8
Definition MaterialLite.h:51
Definition OcclusionData.h:30
FontRef mRoboto16
Definition Renderer.h:225
void RunCustomRenderPasses()
Definition Renderer.cpp:575
FontRef mRobotoMono16
Definition Renderer.h:226
MaterialRef mDefaultMaterial
Definition Renderer.h:212
void EnablePathTracing(bool enable)
Definition Renderer.cpp:276
bool IsRenderingLastScreen() const
Definition Renderer.cpp:321
void LoadDefaultMeshes()
Definition Renderer.cpp:484
static void Destroy()
Definition Renderer.cpp:79
void BeginLightBake()
Definition Renderer.cpp:2270
void SetSelectedColor(const glm::vec4 &color)
Definition Renderer.cpp:2250
bool IsRenderingFirstScreen() const
Definition Renderer.cpp:316
bool IsOcclusionPreviewEnabled() const
Definition Renderer.cpp:241
void SetLightFadeSpeed(float speed)
Definition Renderer.cpp:2310
void Initialize()
Definition Renderer.cpp:108
void EnableStatsOverlay(bool enable)
Definition Renderer.cpp:392
void LoadDefaultTextures()
Definition Renderer.cpp:469
int32_t GetNumOcclusionCulled() const
Definition Renderer.cpp:251
void SetDebugMode(DebugMode mode)
Definition Renderer.cpp:183
uint32_t GetRaysPerPixel() const
Definition Renderer.cpp:2395
glm::uvec4 GetSceneViewport(int32_t screenIdx=-1)
Definition Renderer.cpp:2547
glm::vec4 GetSkyZenithColor() const
Definition Renderer.cpp:2440
void EnableOcclusionCulling(bool enable)
Definition Renderer.cpp:226
static void BuildCameraFrustum(Camera3D *camera, CameraFrustum &outFrustum)
Definition Renderer.cpp:1177
static POLYPHASE_API Renderer * Get()
Definition Renderer.cpp:88
uint32_t GetBakeIndirectIterations() const
Definition Renderer.cpp:2425
uint32_t GetViewportWidth(int32_t screenIdx=-1)
Definition Renderer.cpp:2496
glm::vec4 GetGroundColor() const
Definition Renderer.cpp:2450
uint32_t GetScreenIndex() const
Definition Renderer.cpp:311
bool IsConsoleEnabled()
Definition Renderer.cpp:430
FontRef mRobotoMono8
Definition Renderer.h:227
void EnableConsole(bool enable)
Definition Renderer.cpp:422
bool IsOcclusionCullingEnabled() const
Definition Renderer.cpp:231
bool Is2dRenderingEnabled() const
Definition Renderer.cpp:271
bool IsProxyRenderingEnabled() const
Definition Renderer.cpp:201
glm::vec4 GetSelectedColor() const
Definition Renderer.cpp:2255
void Render(World *world, int32_t screenIndex)
Definition Renderer.cpp:1578
void EnableLightFade(bool enable)
Definition Renderer.cpp:2295
void RemoveDebugDrawsForNode(Node *node)
Definition Renderer.cpp:533
glm::vec4 GetClearColor() const
Definition Renderer.cpp:2245
bool IsPathTraceAccumulationEnabled() const
Definition Renderer.cpp:2405
POLYPHASE_API uint64_t RegisterCustomRenderPass(CustomRenderPassFn fn, void *userData)
Definition Renderer.cpp:551
bool IsStatsOverlayEnabled() const
Definition Renderer.cpp:413
uint32_t GetViewportX(int32_t screenIdx=-1)
Definition Renderer.cpp:2456
glm::vec4 GetSkyHorizonColor() const
Definition Renderer.cpp:2445
TextureRef mDefaultORMTexture
Definition Renderer.h:206
Texture * GetBlackTexture()
Definition Renderer.cpp:286
void Enable2dRendering(bool enable)
Definition Renderer.cpp:266
void SetLightFadeLimit(uint32_t limit)
Definition Renderer.cpp:2300
static void Create()
Definition Renderer.cpp:72
int32_t GetNumFrustumCulled() const
Definition Renderer.cpp:246
float GetLightFadeSpeed() const
Definition Renderer.cpp:2315
bool IsLightFadeEnabled() const
Definition Renderer.cpp:2290
void AddDebugDraw(const DebugDraw &draw)
Definition Renderer.cpp:526
Node3D * ProcessHitCheck(World *world, int32_t x, int32_t y, uint32_t *outInstance=nullptr)
Definition Renderer.cpp:178
bool IsPostProcessPassEnabled(PostProcessPassId passId) const
Definition Renderer.cpp:2355
void LoadDefaultFonts()
Definition Renderer.cpp:516
uint32_t GetBakeDiffuseDirectPasses() const
Definition Renderer.cpp:2430
float GetResolutionScale() const
Definition Renderer.cpp:2390
float GetBakeShadowBias() const
Definition Renderer.cpp:2420
float GetLightBakeProgress() const
Definition Renderer.cpp:2285
StaticMeshRef mCylinderMesh
Definition Renderer.h:217
uint32_t GetViewportY(int32_t screenIdx=-1)
Definition Renderer.cpp:2476
void Enable3dRendering(bool enable)
Definition Renderer.cpp:256
void SetSelectedCheckerSize(float size)
Definition Renderer.cpp:2260
const std::vector< DebugDraw > & GetDebugDraws() const
Definition Renderer.cpp:546
void SetEngineState(EngineState *engineState)
Definition Renderer.cpp:296
uint32_t GetBakeMaxBounces() const
Definition Renderer.cpp:2415
const std::vector< LightData > & GetLightData() const
Definition Renderer.cpp:2235
void EnableProxyRendering(bool enable)
Definition Renderer.cpp:196
void SetBoundsDebugMode(BoundsDebugMode mode)
Definition Renderer.cpp:206
void GatherProperties(std::vector< Property > &props)
Definition Renderer.cpp:142
StaticMeshRef mSphere112Mesh
Definition Renderer.h:220
void SetColorScale(float colorScale)
Definition Renderer.cpp:2320
void(* CustomRenderPassFn)(void *userData)
Definition Renderer.h:140
void EnableOcclusionPreview(bool enable)
Definition Renderer.cpp:236
TextureRef mDefaultColorTexture
Definition Renderer.h:203
bool IsPathTracingEnabled() const
Definition Renderer.cpp:281
Console * GetConsoleWidget()
Definition Renderer.cpp:450
StatsOverlay * GetStatsWidget()
Definition Renderer.cpp:455
float GetColorScale() const
Definition Renderer.cpp:2339
glm::vec2 GetActiveScreenResolution()
Definition Renderer.cpp:359
void SetClearColor(const glm::vec4 &color)
Definition Renderer.cpp:2240
DebugMode GetDebugMode() const
Definition Renderer.cpp:191
TextureRef mDefaultColorAlphaTexture
Definition Renderer.h:204
StaticMeshRef mSphereMesh
Definition Renderer.h:219
uint32_t GetBakeDiffuseIndirectPasses() const
Definition Renderer.cpp:2435
void SetGlobalUiScale(float scale)
Definition Renderer.cpp:369
uint32_t GetLightFadeLimit() const
Definition Renderer.cpp:2305
uint32_t GetFrameIndex() const
Definition Renderer.cpp:306
void DirtyAllWidgets()
Definition Renderer.cpp:435
StaticMeshRef mCubeMesh
Definition Renderer.h:216
BoundsDebugMode GetBoundsDebugMode() const
Definition Renderer.cpp:211
glm::vec2 GetScreenResolution(int32_t screen=-1)
Definition Renderer.cpp:335
uint32_t GetFrameNumber() const
Definition Renderer.cpp:301
TextureRef mDefaultNormalTexture
Definition Renderer.h:205
void SetResolutionScale(float scale)
Definition Renderer.cpp:2384
bool Is3dRenderingEnabled() const
Definition Renderer.cpp:261
void LoadDefaultMaterials()
Definition Renderer.cpp:479
void EnablePostProcessPass(PostProcessPassId passId, bool enable)
Definition Renderer.cpp:2373
void EndLightBake()
Definition Renderer.cpp:2275
StaticMeshRef mConeMesh
Definition Renderer.h:215
StaticMeshRef mPlaneMesh
Definition Renderer.h:218
TextureRef mBlackTexture
Definition Renderer.h:202
MaterialLite * GetDefaultMaterial()
Definition Renderer.cpp:291
TextureRef mWhiteTexture
Definition Renderer.h:201
float GetSelectedCheckerSize() const
Definition Renderer.cpp:2265
TextureRef mEnvironmentMap
Definition Renderer.h:209
World * GetCurrentWorld()
Definition Renderer.cpp:330
uint32_t GetMaxBounces() const
Definition Renderer.cpp:2400
uint32_t GetViewportHeight(int32_t screenIdx=-1)
Definition Renderer.cpp:2519
void EnableFrustumCulling(bool enable)
Definition Renderer.cpp:216
bool IsFrustumCullingEnabled() const
Definition Renderer.cpp:221
bool IsLightBakeInProgress() const
Definition Renderer.cpp:2280
POLYPHASE_API void UnregisterCustomRenderPass(uint64_t id)
Definition Renderer.cpp:562
float GetGlobalUiScale() const
Definition Renderer.cpp:364
float GetColorScaleInverse() const
Definition Renderer.cpp:2345
FontRef mRoboto32
Definition Renderer.h:224
StaticMeshRef mTorusMesh
Definition Renderer.h:221
glm::uvec4 GetViewport(int32_t screenIdx=-1)
Definition Renderer.cpp:2542
~Renderer()
Definition Renderer.cpp:93
uint32_t GetBakeRaysPerVertex() const
Definition Renderer.cpp:2410
Definition SmartPointer.h:33
Definition StatsOverlay.h:27
Definition EngineTypes.h:365
Definition EngineTypes.h:333
Definition EngineTypes.h:503
float mDistance2
Definition Renderer.h:27
LightDistance2(Light3D *comp, float dist2)
Definition Renderer.h:29
Light3D * mComponent
Definition Renderer.h:26