diff options
author | Tony Wasserka <NeoBrainX@gmail.com> | 2014-08-17 17:44:55 +0200 |
---|---|---|
committer | Tony Wasserka <NeoBrainX@gmail.com> | 2014-08-25 22:03:19 +0200 |
commit | 2f1c129f6407fe2d5c8c3e57c6717d5668570de5 (patch) | |
tree | 5d12dadd9ffe3b46b9b94a84b7688d6d3b8260fd /src/video_core/command_processor.cpp | |
parent | Pica/Rasterizer: Add texturing support. (diff) | |
download | yuzu-2f1c129f6407fe2d5c8c3e57c6717d5668570de5.tar yuzu-2f1c129f6407fe2d5c8c3e57c6717d5668570de5.tar.gz yuzu-2f1c129f6407fe2d5c8c3e57c6717d5668570de5.tar.bz2 yuzu-2f1c129f6407fe2d5c8c3e57c6717d5668570de5.tar.lz yuzu-2f1c129f6407fe2d5c8c3e57c6717d5668570de5.tar.xz yuzu-2f1c129f6407fe2d5c8c3e57c6717d5668570de5.tar.zst yuzu-2f1c129f6407fe2d5c8c3e57c6717d5668570de5.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/command_processor.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/video_core/command_processor.cpp b/src/video_core/command_processor.cpp index 8da030601..9567a9849 100644 --- a/src/video_core/command_processor.cpp +++ b/src/video_core/command_processor.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2 // Refer to the license.txt file included. +#include "clipper.h" #include "command_processor.h" #include "math.h" #include "pica.h" @@ -79,6 +80,8 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) { bool index_u16 = (bool)index_info.format; DebugUtils::GeometryDumper geometry_dumper; + PrimitiveAssembler<VertexShader::OutputVertex> clipper_primitive_assembler(registers.triangle_topology.Value()); + PrimitiveAssembler<DebugUtils::GeometryDumper::Vertex> dumping_primitive_assembler(registers.triangle_topology.Value()); for (int index = 0; index < registers.num_vertices; ++index) { @@ -108,16 +111,25 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) { } } - // NOTE: For now, we simply assume that the first input attribute corresponds to the position. - geometry_dumper.AddVertex({input.attr[0][0].ToFloat32(), input.attr[0][1].ToFloat32(), input.attr[0][2].ToFloat32()}, registers.triangle_topology); - + // NOTE: When dumping geometry, we simply assume that the first input attribute + // corresponds to the position for now. + DebugUtils::GeometryDumper::Vertex dumped_vertex = { + input.attr[0][0].ToFloat32(), input.attr[0][1].ToFloat32(), input.attr[0][2].ToFloat32() + }; + using namespace std::placeholders; + dumping_primitive_assembler.SubmitVertex(dumped_vertex, + std::bind(&DebugUtils::GeometryDumper::AddTriangle, + &geometry_dumper, _1, _2, _3)); + + // Send to vertex shader VertexShader::OutputVertex output = VertexShader::RunShader(input, attribute_config.GetNumTotalAttributes()); if (is_indexed) { // TODO: Add processed vertex to vertex cache! } - PrimitiveAssembly::SubmitVertex(output); + // Send to triangle clipper + clipper_primitive_assembler.SubmitVertex(output, Clipper::ProcessTriangle); } geometry_dumper.Dump(); break; |