summaryrefslogtreecommitdiff
path: root/src/video_core/rasterizer.cpp
diff options
context:
space:
mode:
authorGravatar Tony Wasserka2015-01-26 11:52:15 +0100
committerGravatar Tony Wasserka2015-01-26 11:52:15 +0100
commit0cf3c40aa9f57a425c3cceba9a9a02986226bb21 (patch)
tree464bf8822bd09f9cc2e6a9d23e95cacf882459d7 /src/video_core/rasterizer.cpp
parentMerge pull request #484 from chinhodado/build (diff)
parentGPU: Implement the remaining depth testing functions. (diff)
downloadyuzu-0cf3c40aa9f57a425c3cceba9a9a02986226bb21.tar.gz
yuzu-0cf3c40aa9f57a425c3cceba9a9a02986226bb21.tar.xz
yuzu-0cf3c40aa9f57a425c3cceba9a9a02986226bb21.zip
Merge pull request #506 from bunnei/depth-functions
GPU: Implement the remaining depth testing functions.
Diffstat (limited to 'src/video_core/rasterizer.cpp')
-rw-r--r--src/video_core/rasterizer.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/video_core/rasterizer.cpp b/src/video_core/rasterizer.cpp
index 025d4e484..219a1bbb7 100644
--- a/src/video_core/rasterizer.cpp
+++ b/src/video_core/rasterizer.cpp
@@ -441,18 +441,38 @@ void ProcessTriangle(const VertexShader::OutputVertex& v0,
441 bool pass = false; 441 bool pass = false;
442 442
443 switch (registers.output_merger.depth_test_func) { 443 switch (registers.output_merger.depth_test_func) {
444 case registers.output_merger.Never:
445 pass = false;
446 break;
447
444 case registers.output_merger.Always: 448 case registers.output_merger.Always:
445 pass = true; 449 pass = true;
446 break; 450 break;
447 451
452 case registers.output_merger.Equal:
453 pass = z == ref_z;
454 break;
455
456 case registers.output_merger.NotEqual:
457 pass = z != ref_z;
458 break;
459
448 case registers.output_merger.LessThan: 460 case registers.output_merger.LessThan:
449 pass = z < ref_z; 461 pass = z < ref_z;
450 break; 462 break;
451 463
464 case registers.output_merger.LessThanOrEqual:
465 pass = z <= ref_z;
466 break;
467
452 case registers.output_merger.GreaterThan: 468 case registers.output_merger.GreaterThan:
453 pass = z > ref_z; 469 pass = z > ref_z;
454 break; 470 break;
455 471
472 case registers.output_merger.GreaterThanOrEqual:
473 pass = z >= ref_z;
474 break;
475
456 default: 476 default:
457 LOG_ERROR(HW_GPU, "Unknown depth test function %x", registers.output_merger.depth_test_func.Value()); 477 LOG_ERROR(HW_GPU, "Unknown depth test function %x", registers.output_merger.depth_test_func.Value());
458 break; 478 break;