|
|
|
@ -85,7 +85,7 @@ void GeometryDumper::AddTriangle(Vertex& v0, Vertex& v1, Vertex& v2) {
|
|
|
|
|
vertices.push_back(v1);
|
|
|
|
|
vertices.push_back(v2);
|
|
|
|
|
|
|
|
|
|
int num_vertices = vertices.size();
|
|
|
|
|
size_t num_vertices = vertices.size();
|
|
|
|
|
faces.push_back({ num_vertices-3, num_vertices-2, num_vertices-1 });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -241,8 +241,8 @@ void DumpShader(const u32* binary_data, u32 binary_size, const u32* swizzle_data
|
|
|
|
|
|
|
|
|
|
dvle.main_offset_words = main_offset;
|
|
|
|
|
dvle.output_register_table_offset = write_offset - dvlb.dvle_offset;
|
|
|
|
|
dvle.output_register_table_size = output_info_table.size();
|
|
|
|
|
QueueForWriting((u8*)output_info_table.data(), output_info_table.size() * sizeof(OutputRegisterInfo));
|
|
|
|
|
dvle.output_register_table_size = static_cast<uint32_t>(output_info_table.size());
|
|
|
|
|
QueueForWriting((u8*)output_info_table.data(), static_cast<u32>(output_info_table.size() * sizeof(OutputRegisterInfo)));
|
|
|
|
|
|
|
|
|
|
// TODO: Create a label table for "main"
|
|
|
|
|
|
|
|
|
@ -497,31 +497,31 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture
|
|
|
|
|
// Lookup base value
|
|
|
|
|
Math::Vec3<int> ret;
|
|
|
|
|
if (differential_mode) {
|
|
|
|
|
ret.r() = differential.r;
|
|
|
|
|
ret.g() = differential.g;
|
|
|
|
|
ret.b() = differential.b;
|
|
|
|
|
ret.r() = static_cast<int>(differential.r);
|
|
|
|
|
ret.g() = static_cast<int>(differential.g);
|
|
|
|
|
ret.b() = static_cast<int>(differential.b);
|
|
|
|
|
if (x >= 2) {
|
|
|
|
|
ret.r() += differential.dr;
|
|
|
|
|
ret.g() += differential.dg;
|
|
|
|
|
ret.b() += differential.db;
|
|
|
|
|
ret.r() += static_cast<int>(differential.dr);
|
|
|
|
|
ret.g() += static_cast<int>(differential.dg);
|
|
|
|
|
ret.b() += static_cast<int>(differential.db);
|
|
|
|
|
}
|
|
|
|
|
ret.r() = Color::Convert5To8(ret.r());
|
|
|
|
|
ret.g() = Color::Convert5To8(ret.g());
|
|
|
|
|
ret.b() = Color::Convert5To8(ret.b());
|
|
|
|
|
} else {
|
|
|
|
|
if (x < 2) {
|
|
|
|
|
ret.r() = Color::Convert4To8(separate.r1);
|
|
|
|
|
ret.g() = Color::Convert4To8(separate.g1);
|
|
|
|
|
ret.b() = Color::Convert4To8(separate.b1);
|
|
|
|
|
ret.r() = Color::Convert4To8(static_cast<u8>(separate.r1));
|
|
|
|
|
ret.g() = Color::Convert4To8(static_cast<u8>(separate.g1));
|
|
|
|
|
ret.b() = Color::Convert4To8(static_cast<u8>(separate.b1));
|
|
|
|
|
} else {
|
|
|
|
|
ret.r() = Color::Convert4To8(separate.r2);
|
|
|
|
|
ret.g() = Color::Convert4To8(separate.g2);
|
|
|
|
|
ret.b() = Color::Convert4To8(separate.b2);
|
|
|
|
|
ret.r() = Color::Convert4To8(static_cast<u8>(separate.r2));
|
|
|
|
|
ret.g() = Color::Convert4To8(static_cast<u8>(separate.g2));
|
|
|
|
|
ret.b() = Color::Convert4To8(static_cast<u8>(separate.b2));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Add modifier
|
|
|
|
|
unsigned table_index = (x < 2) ? table_index_1.Value() : table_index_2.Value();
|
|
|
|
|
unsigned table_index = static_cast<int>((x < 2) ? table_index_1.Value() : table_index_2.Value());
|
|
|
|
|
|
|
|
|
|
static const std::array<std::array<u8, 2>, 8> etc1_modifier_table = {{
|
|
|
|
|
{ 2, 8 }, { 5, 17 }, { 9, 29 }, { 13, 42 },
|
|
|
|
|