From b522cf4e6a77d025eab4f70c1efdbc401f08e15b Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 27 Jan 2015 17:26:09 -0500 Subject: Pica: Implement color/alpha channel enable. --- src/video_core/pica.h | 4 ++++ src/video_core/rasterizer.cpp | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src/video_core') diff --git a/src/video_core/pica.h b/src/video_core/pica.h index a19f4190c..78603ebdf 100644 --- a/src/video_core/pica.h +++ b/src/video_core/pica.h @@ -370,6 +370,10 @@ struct Regs { union { BitField< 0, 1, u32> depth_test_enable; BitField< 4, 3, CompareFunc> depth_test_func; + BitField< 8, 1, u32> red_enable; + BitField< 9, 1, u32> green_enable; + BitField<10, 1, u32> blue_enable; + BitField<11, 1, u32> alpha_enable; BitField<12, 1, u32> depth_write_enable; }; diff --git a/src/video_core/rasterizer.cpp b/src/video_core/rasterizer.cpp index 15715c43d..7f66c6d42 100644 --- a/src/video_core/rasterizer.cpp +++ b/src/video_core/rasterizer.cpp @@ -594,7 +594,14 @@ void ProcessTriangle(const VertexShader::OutputVertex& v0, exit(0); } - DrawPixel(x >> 4, y >> 4, combiner_output); + const Math::Vec4 result = { + registers.output_merger.red_enable ? combiner_output.r() : dest.r(), + registers.output_merger.green_enable ? combiner_output.g() : dest.g(), + registers.output_merger.blue_enable ? combiner_output.b() : dest.b(), + registers.output_merger.alpha_enable ? combiner_output.a() : dest.a() + }; + + DrawPixel(x >> 4, y >> 4, result); } } } -- cgit v1.2.3