فهرست منبع

Merge pull request #510 from bunnei/pica_color_enable

Pica: Implement color/alpha channel enable.
bunnei 11 سال پیش
والد
کامیت
8d4c6a1d5e
2فایلهای تغییر یافته به همراه12 افزوده شده و 1 حذف شده
  1. 4 0
      src/video_core/pica.h
  2. 8 1
      src/video_core/rasterizer.cpp

+ 4 - 0
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;
         };
 

+ 8 - 1
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<u8> 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);
         }
     }
 }