Skip to content

Commit 27da5cf

Browse files
committed
Also apply tsaa to combined view proj matrix
1 parent df85d12 commit 27da5cf

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

kool-core/src/commonMain/kotlin/de/fabmax/kool/pipeline/deferred2/Deferred2Pipeline.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ class Deferred2Pipeline(
6060
)
6161
val filterPass = TemporalFilterPass(size = size, pipeline = this)
6262

63+
internal val viewProjNoTsaa = MutableMat4f()
64+
internal val invViewProjNoTsaa = MutableMat4f()
65+
6366
private val swapListeners = BufferedList<() -> Unit>()
6467
private val resizeListeners = BufferedList<(Vec2i) -> Unit>()
6568

@@ -86,14 +89,19 @@ class Deferred2Pipeline(
8689

8790
val offsetMat = MutableMat4f()
8891
camera.onCameraUpdated += {
92+
viewProjNoTsaa.set(camera.viewProj)
93+
invViewProjNoTsaa.set(camera.invViewProj)
94+
8995
val tsaa = tsaa
9096
if (tsaa.isNotEmpty()) {
9197
val offset = tsaa[Time.frameCount % tsaa.size]
9298
val width = it.viewport.width
9399
val height = it.viewport.height
94100
offsetMat.setIdentity().translate(offset.x / width, offset.y / height, 0f).mul(camera.proj)
95101
camera.proj.set(offsetMat)
102+
camera.proj.mul(camera.view, camera.dataF.viewProj)
96103
camera.lazyInvProj.isDirty = true
104+
camera.dataF.lazyInvViewProj.isDirty = true
97105
}
98106
}
99107

@@ -122,7 +130,7 @@ class Deferred2Pipeline(
122130
set(it.view, camera.view)
123131
set(it.viewProj, camera.viewProj)
124132
set(it.invView, camera.invView)
125-
set(it.invViewProj, camera.invViewProj)
133+
set(it.invViewProj, invViewProjNoTsaa)
126134
set(it.oldViewProj, reprojectMatrixComputePass.uploadData.oldVal.viewProjMat)
127135
set(it.camPosition, camera.globalPos)
128136
set(it.camNear, camera.clipNear)

kool-core/src/commonMain/kotlin/de/fabmax/kool/pipeline/deferred2/GbufferPass.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class GbufferPass(
4040
camera = pipeline.camera
4141
onAfterCollectDrawCommands += { viewData ->
4242
val upload = pipeline.reprojectMatrixComputePass.uploadData.newVal
43-
upload.viewProjMat.set(viewData.drawQueue.viewProjMatF)
43+
upload.viewProjMat.set(pipeline.viewProjNoTsaa)
4444
lightingPassMeshes.clear()
4545

4646
// This is a bit of a hack to prevent modifying data while it is uploaded to oldModelMats binding during

0 commit comments

Comments
 (0)