Removing more debugging code
This commit is contained in:
@@ -11,6 +11,8 @@ struct ViewParameter
|
|||||||
float4x4 inverseViewMatrix;
|
float4x4 inverseViewMatrix;
|
||||||
float4x4 projectionMatrix;
|
float4x4 projectionMatrix;
|
||||||
float4x4 inverseProjection;
|
float4x4 inverseProjection;
|
||||||
|
float4x4 viewProjectionMatrix;
|
||||||
|
float4x4 inverseViewProjectionMatrix;
|
||||||
float4 cameraPosition_WS;
|
float4 cameraPosition_WS;
|
||||||
float4 cameraForward_WS;
|
float4 cameraForward_WS;
|
||||||
float2 screenDimensions;
|
float2 screenDimensions;
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ int ClassifyBisector(in BisectorGeometry tri, uint depth)
|
|||||||
return FRUSTUM_CULLED;
|
return FRUSTUM_CULLED;
|
||||||
|
|
||||||
// Project the points on screen
|
// Project the points on screen
|
||||||
float4x4 viewProjectionMatrix = mul(pViewParams.projectionMatrix, pViewParams.viewMatrix);
|
float4x4 viewProjectionMatrix = pViewParams.viewProjectionMatrix;
|
||||||
float4 p0P = mul(viewProjectionMatrix, float4(tri.p[0], 1.0));
|
float4 p0P = mul(viewProjectionMatrix, float4(tri.p[0], 1.0));
|
||||||
p0P.xy = p0P.xy / p0P.w;
|
p0P.xy = p0P.xy / p0P.w;
|
||||||
p0P.xy = (p0P.xy * 0.5 + 0.5);
|
p0P.xy = (p0P.xy * 0.5 + 0.5);
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ RenderPass::~RenderPass() {}
|
|||||||
|
|
||||||
void RenderPass::beginFrame(const Component::Camera& cam) {
|
void RenderPass::beginFrame(const Component::Camera& cam) {
|
||||||
auto screenDim = Vector2(static_cast<float>(viewport->getWidth()), static_cast<float>(viewport->getHeight()));
|
auto screenDim = Vector2(static_cast<float>(viewport->getWidth()), static_cast<float>(viewport->getHeight()));
|
||||||
|
Matrix4 cameraMatrix = cam.getViewMatrix();
|
||||||
|
Matrix4 projectionMatrix = viewport->getProjectionMatrix();
|
||||||
viewParams = {
|
viewParams = {
|
||||||
.viewFrustum =
|
.viewFrustum =
|
||||||
{
|
{
|
||||||
@@ -47,10 +49,12 @@ void RenderPass::beginFrame(const Component::Camera& cam) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
.viewMatrix = cam.getViewMatrix(),
|
.viewMatrix = cameraMatrix,
|
||||||
.inverseViewMatrix = glm::inverse(cam.getViewMatrix()),
|
.inverseViewMatrix = glm::inverse(cameraMatrix),
|
||||||
.projectionMatrix = viewport->getProjectionMatrix(),
|
.projectionMatrix = projectionMatrix,
|
||||||
.inverseProjection = glm::inverse(viewport->getProjectionMatrix()),
|
.inverseProjection = glm::inverse(projectionMatrix),
|
||||||
|
.viewProjectionMatrix = projectionMatrix * cameraMatrix,
|
||||||
|
.inverseViewProjectionMatrix = glm::inverse(projectionMatrix * cameraMatrix),
|
||||||
.cameraPosition_WS = Vector4(cam.getCameraPosition(), 1),
|
.cameraPosition_WS = Vector4(cam.getCameraPosition(), 1),
|
||||||
.cameraForward_WS = Vector4(cam.getCameraForward(), 1),
|
.cameraForward_WS = Vector4(cam.getCameraForward(), 1),
|
||||||
.screenDimensions = screenDim,
|
.screenDimensions = screenDim,
|
||||||
@@ -58,6 +62,35 @@ void RenderPass::beginFrame(const Component::Camera& cam) {
|
|||||||
.frameIndex = Gfx::getCurrentFrameIndex(),
|
.frameIndex = Gfx::getCurrentFrameIndex(),
|
||||||
.time = static_cast<float>(Gfx::getCurrentFrameTime()),
|
.time = static_cast<float>(Gfx::getCurrentFrameTime()),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// screen space
|
||||||
|
StaticArray<Vector4, 4> corners = {
|
||||||
|
Vector4(0, 0, -1, 1),
|
||||||
|
Vector4(screenDim.x, 0, -1, 1),
|
||||||
|
Vector4(screenDim.y, 0, -1, 1),
|
||||||
|
Vector4(screenDim.x, screenDim.y, -1, 1),
|
||||||
|
};
|
||||||
|
|
||||||
|
for (uint32 i = 0; i < corners.size(); ++i) {
|
||||||
|
Vector2 texCoord = Vector2(corners[i].x, corners[i].y) / screenDim;
|
||||||
|
|
||||||
|
Vector4 clip = Vector4(Vector2(texCoord.x, 1 - texCoord.y) * 2.0f - 1.0f, corners[i].z, corners[i].w);
|
||||||
|
|
||||||
|
Vector4 world = viewParams.inverseViewProjectionMatrix * clip;
|
||||||
|
|
||||||
|
corners[i] = world / world.w;
|
||||||
|
}
|
||||||
|
|
||||||
|
//viewParams.viewFrustum = {
|
||||||
|
// .planes =
|
||||||
|
// {
|
||||||
|
// computePlane(cam.getCameraPosition(), Vector(corners[2]), Vector(corners[0])),
|
||||||
|
// computePlane(cam.getCameraPosition(), Vector(corners[1]), Vector(corners[3])),
|
||||||
|
// computePlane(cam.getCameraPosition(), Vector(corners[0]), Vector(corners[1])),
|
||||||
|
// computePlane(cam.getCameraPosition(), Vector(corners[3]), Vector(corners[2])),
|
||||||
|
// },
|
||||||
|
//};
|
||||||
|
|
||||||
viewParamsBuffer->rotateBuffer(sizeof(ViewParameter));
|
viewParamsBuffer->rotateBuffer(sizeof(ViewParameter));
|
||||||
viewParamsBuffer->updateContents(0, sizeof(ViewParameter), &viewParams);
|
viewParamsBuffer->updateContents(0, sizeof(ViewParameter), &viewParams);
|
||||||
viewParamsBuffer->pipelineBarrier(Gfx::SE_ACCESS_TRANSFER_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_TRANSFER_BIT,
|
viewParamsBuffer->pipelineBarrier(Gfx::SE_ACCESS_TRANSFER_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
|
|||||||
@@ -34,12 +34,27 @@ class RenderPass {
|
|||||||
struct Frustum {
|
struct Frustum {
|
||||||
Plane planes[4];
|
Plane planes[4];
|
||||||
};
|
};
|
||||||
|
Plane computePlane(Vector p0, Vector p1, Vector p2) {
|
||||||
|
Plane plane;
|
||||||
|
|
||||||
|
Vector v0 = p1 - p0;
|
||||||
|
Vector v2 = p2 - p0;
|
||||||
|
|
||||||
|
plane.n = normalize(cross(v0, v2));
|
||||||
|
|
||||||
|
plane.d = dot(plane.n, p0);
|
||||||
|
|
||||||
|
return plane;
|
||||||
|
}
|
||||||
|
|
||||||
struct ViewParameter {
|
struct ViewParameter {
|
||||||
Frustum viewFrustum;
|
Frustum viewFrustum;
|
||||||
Matrix4 viewMatrix;
|
Matrix4 viewMatrix;
|
||||||
Matrix4 inverseViewMatrix;
|
Matrix4 inverseViewMatrix;
|
||||||
Matrix4 projectionMatrix;
|
Matrix4 projectionMatrix;
|
||||||
Matrix4 inverseProjection;
|
Matrix4 inverseProjection;
|
||||||
|
Matrix4 viewProjectionMatrix;
|
||||||
|
Matrix4 inverseViewProjectionMatrix;
|
||||||
Vector4 cameraPosition_WS;
|
Vector4 cameraPosition_WS;
|
||||||
Vector4 cameraForward_WS;
|
Vector4 cameraForward_WS;
|
||||||
Vector2 screenDimensions;
|
Vector2 screenDimensions;
|
||||||
|
|||||||
Reference in New Issue
Block a user