gpu: saturate instead of overflowing depth buffer

Use greater-than-or-equal test and saturate the z depth buffer
when more than 65k objects are drawn.

Fixes gio#127

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2020-06-08 16:25:47 +02:00
parent 52864950f1
commit 504664e014
6 changed files with 16 additions and 8 deletions
+2
View File
@@ -605,6 +605,8 @@ func (b *Backend) prepareDraw(mode backend.DrawMode) {
switch b.depthState.fn {
case backend.DepthFuncGreater:
desc.DepthFunc = _D3D11_COMPARISON_GREATER
case backend.DepthFuncGreaterEqual:
desc.DepthFunc = _D3D11_COMPARISON_GREATER_EQUAL
default:
panic("unsupported depth func")
}
+2 -1
View File
@@ -621,7 +621,8 @@ const (
_D3D11_DEPTH_WRITE_MASK_ALL = 1
_D3D11_COMPARISON_GREATER = 5
_D3D11_COMPARISON_GREATER = 5
_D3D11_COMPARISON_GREATER_EQUAL = 7
_D3D11_BLEND_OP_ADD = 1
_D3D11_BLEND_ONE = 2