#pragma once #include #include #include #include "camera.h" #include "Frustum.h" #include "ConstantBuffers/CameraMatrixBuffer.h" namespace T5M::Renderer { struct RendererStatic; struct RendererItem; struct RendererLight; struct RendererEffect; struct RendererRoom; using DirectX::SimpleMath::Vector3; using DirectX::SimpleMath::Vector2; using DirectX::SimpleMath::Matrix; struct RenderViewCamera { Matrix ViewProjection; Matrix View; Matrix Projection; Vector3 WorldPosition; Vector3 WorldDirection; Vector2 ViewSize; Vector2 InvViewSize; int RoomNumber; Frustum frustum; RenderViewCamera(CAMERA_INFO* cam, float roll, float fov, float n, float f, int w, int h); RenderViewCamera(const Vector3& pos, const Vector3& dir,const Vector3& up, int room,int width, int height,float fov,float n, float f); }; struct RenderView { RenderViewCamera camera; D3D11_VIEWPORT viewport; std::vector roomsToDraw; std::vector staticsToDraw; std::vector effectsToDraw; std::vector itemsToDraw; std::vector lightsToDraw; RenderView(CAMERA_INFO* cam, float roll, float fov, float nearPlane, float farPlane, int w, int h); RenderView(const Vector3& pos, const Vector3& dir, const Vector3& up, int w, int h, int room, float nearPlane, float farPlane, float fov); void fillConstantBuffer(CCameraMatrixBuffer& bufferToFill); void clear(); }; }