Add support for sRGB framebuffers and blending to tinydisplay renderer.

This commit is contained in:
rdb 2014-10-08 11:34:41 +00:00
parent 4ffb512fae
commit 32a9e4d9ed
17 changed files with 10817 additions and 952 deletions

View File

@ -6,6 +6,7 @@
#include "td_light.cxx"
#include "memory.cxx"
#include "specbuf.cxx"
#include "srgb_tables.cxx"
#include "store_pixel.cxx"
#include "td_texture.cxx"
#include "tinyGeomMunger.cxx"

View File

@ -0,0 +1,346 @@
const unsigned short decode_sRGB[256] = { 0x0000, 0x0013, 0x0027, 0x003b,
0x004f, 0x0063, 0x0077, 0x008b, 0x009f, 0x00b3, 0x00c6, 0x00db, 0x00f0,
0x0107, 0x011f, 0x0139, 0x0153, 0x016f, 0x018c, 0x01aa, 0x01ca, 0x01eb,
0x020d, 0x0231, 0x0256, 0x027d, 0x02a4, 0x02ce, 0x02f9, 0x0325, 0x0352,
0x0381, 0x03b2, 0x03e4, 0x0418, 0x044d, 0x0484, 0x04bc, 0x04f6, 0x0531,
0x056e, 0x05ad, 0x05ed, 0x062f, 0x0672, 0x06b7, 0x06fe, 0x0746, 0x0791,
0x07dc, 0x082a, 0x0879, 0x08ca, 0x091d, 0x0971, 0x09c7, 0x0a1f, 0x0a79,
0x0ad4, 0x0b32, 0x0b91, 0x0bf2, 0x0c54, 0x0cb9, 0x0d1f, 0x0d88, 0x0df2,
0x0e5e, 0x0ecc, 0x0f3c, 0x0fad, 0x1021, 0x1096, 0x110e, 0x1187, 0x1203,
0x1280, 0x12ff, 0x1380, 0x1404, 0x1489, 0x1510, 0x1599, 0x1624, 0x16b2,
0x1741, 0x17d2, 0x1865, 0x18fb, 0x1992, 0x1a2c, 0x1ac8, 0x1b65, 0x1c05,
0x1ca7, 0x1d4b, 0x1df1, 0x1e99, 0x1f44, 0x1ff0, 0x209f, 0x2150, 0x2203,
0x22b8, 0x2370, 0x2429, 0x24e5, 0x25a3, 0x2663, 0x2726, 0x27ea, 0x28b1,
0x297a, 0x2a45, 0x2b13, 0x2be3, 0x2cb5, 0x2d89, 0x2e60, 0x2f39, 0x3014,
0x30f2, 0x31d2, 0x32b4, 0x3398, 0x347f, 0x3569, 0x3654, 0x3742, 0x3832,
0x3925, 0x3a1a, 0x3b11, 0x3c0b, 0x3d07, 0x3e05, 0x3f06, 0x400a, 0x410f,
0x4218, 0x4322, 0x442f, 0x453f, 0x4650, 0x4765, 0x487c, 0x4995, 0x4ab1,
0x4bcf, 0x4cf0, 0x4e13, 0x4f39, 0x5061, 0x518b, 0x52b9, 0x53e8, 0x551b,
0x5650, 0x5787, 0x58c1, 0x59fd, 0x5b3c, 0x5c7e, 0x5dc2, 0x5f09, 0x6052,
0x619e, 0x62ec, 0x643d, 0x6591, 0x66e7, 0x6840, 0x699b, 0x6afa, 0x6c5a,
0x6dbe, 0x6f24, 0x708c, 0x71f8, 0x7366, 0x74d6, 0x764a, 0x77c0, 0x7938,
0x7ab4, 0x7c32, 0x7db3, 0x7f36, 0x80bc, 0x8245, 0x83d1, 0x855f, 0x86f0,
0x8884, 0x8a1a, 0x8bb4, 0x8d50, 0x8eee, 0x9090, 0x9234, 0x93db, 0x9585,
0x9732, 0x98e1, 0x9a93, 0x9c48, 0x9e00, 0x9fbb, 0xa178, 0xa338, 0xa4fb,
0xa6c1, 0xa88a, 0xaa56, 0xac24, 0xadf5, 0xafc9, 0xb1a0, 0xb37a, 0xb557,
0xb736, 0xb919, 0xbafe, 0xbce6, 0xbed2, 0xc0c0, 0xc2b0, 0xc4a4, 0xc69b,
0xc895, 0xca91, 0xcc91, 0xce93, 0xd098, 0xd2a1, 0xd4ac, 0xd6ba, 0xd8cb,
0xdadf, 0xdcf7, 0xdf11, 0xe12e, 0xe34e, 0xe571, 0xe796, 0xe9bf, 0xebeb,
0xee1a, 0xf04c, 0xf281, 0xf4b9, 0xf6f4, 0xf932, 0xfb73, 0xfdb7, 0xffff};
const unsigned char encode_sRGB[4096] = { 0x00, 0x01, 0x02, 0x02, 0x03, 0x04,
0x05, 0x06, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0a, 0x0b, 0x0c, 0x0d, 0x0d, 0x0e,
0x0f, 0x0f, 0x10, 0x10, 0x11, 0x12, 0x12, 0x13, 0x13, 0x14, 0x14, 0x15, 0x15,
0x16, 0x16, 0x17, 0x17, 0x17, 0x18, 0x18, 0x19, 0x19, 0x19, 0x1a, 0x1a, 0x1b,
0x1b, 0x1b, 0x1c, 0x1c, 0x1d, 0x1d, 0x1d, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x1f,
0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23,
0x24, 0x24, 0x24, 0x25, 0x25, 0x25, 0x25, 0x26, 0x26, 0x26, 0x26, 0x27, 0x27,
0x27, 0x28, 0x28, 0x28, 0x28, 0x29, 0x29, 0x29, 0x29, 0x2a, 0x2a, 0x2a, 0x2a,
0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2d,
0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2f, 0x2f, 0x2f, 0x2f, 0x30, 0x30, 0x30, 0x30,
0x30, 0x31, 0x31, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x32, 0x32, 0x33, 0x33,
0x33, 0x33, 0x33, 0x34, 0x34, 0x34, 0x34, 0x34, 0x35, 0x35, 0x35, 0x35, 0x35,
0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x38, 0x38,
0x38, 0x38, 0x38, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3a, 0x3a, 0x3a, 0x3a,
0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
0x3c, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e,
0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
0x44, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x46, 0x46, 0x46, 0x46, 0x46,
0x46, 0x46, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x48, 0x48, 0x48, 0x48,
0x48, 0x48, 0x48, 0x48, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x4a, 0x4a,
0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b,
0x4b, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d,
0x4d, 0x4d, 0x4d, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4f,
0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50,
0x50, 0x50, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x52, 0x52,
0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
0x53, 0x53, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
0x56, 0x56, 0x56, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58,
0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x59,
0x59, 0x59, 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,
0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5c,
0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5d, 0x5d, 0x5d, 0x5d,
0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e,
0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x61,
0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x62, 0x62,
0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
0x63, 0x63, 0x63, 0x63, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64,
0x64, 0x64, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65,
0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x67,
0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68,
0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x69,
0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a,
0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b,
0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c,
0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d,
0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e,
0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f,
0x6f, 0x6f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
0x70, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71,
0x71, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
0x72, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73,
0x73, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74,
0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75,
0x75, 0x75, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76,
0x76, 0x76, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79,
0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a,
0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d,
0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e,
0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f,
0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84,
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85,
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89,
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d,
0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90,
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93,
0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
0x93, 0x93, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x96,
0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
0x96, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1,
0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4,
0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
0xa7, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9,
0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab,
0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
0xac, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
0xad, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae,
0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf,
0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0,
0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0,
0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1,
0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5,
0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5,
0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6,
0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9,
0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9,
0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba,
0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba,
0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2,
0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2,
0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9,
0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9,
0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca,
0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce,
0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce,
0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf,
0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf,
0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2,
0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2,
0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3, 0xd3,
0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3,
0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4,
0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
0xd4, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
0xd5, 0xd5, 0xd5, 0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdc, 0xdc,
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
0xdc, 0xdc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde,
0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde,
0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2,
0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4,
0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6,
0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6,
0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6,
0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec,
0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec,
0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec,
0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee,
0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee,
0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef,
0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef,
0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8,
0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc,
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};

View File

@ -0,0 +1,6 @@
/* 8-bit sRGB to 16-bit linear */
extern const unsigned short decode_sRGB[256];
/* 12-bit linear to 8-bit sRGB. I used 12-bit because it can
represent all possible 8-bit sRGB values. */
extern const unsigned char encode_sRGB[4096];

View File

@ -18,7 +18,7 @@
/* This file generates lots of "template" variations, using #define
and #include, similar to the way ztriangle.h works. */
static void
static void
FNAME(store_pixel) (ZBuffer *zb, PIXEL &result, int r, int g, int b, int a) {
unsigned int fr = PIXEL_R(result);
unsigned int fg = PIXEL_G(result);
@ -32,8 +32,27 @@ FNAME(store_pixel) (ZBuffer *zb, PIXEL &result, int r, int g, int b, int a) {
result = RGBA_TO_PIXEL(r, g, b, a);
}
#ifdef FNAME_S
/* sRGB variant. */
#undef FNAME
static void
FNAME_S(store_pixel) (ZBuffer *zb, PIXEL &result, int r, int g, int b, int a) {
unsigned int fr = PIXEL_SR(result);
unsigned int fg = PIXEL_SG(result);
unsigned int fb = PIXEL_SB(result);
unsigned int fa = PIXEL_A(result);
r = STORE_PIXEL_0(fr, ((unsigned int)r * OP_A(fr, r) >> 16) + ((unsigned int)fr * OP_B(fr, r) >> 16));
g = STORE_PIXEL_1(fg, ((unsigned int)g * OP_A(fg, g) >> 16) + ((unsigned int)fg * OP_B(fg, g) >> 16));
b = STORE_PIXEL_2(fg, ((unsigned int)b * OP_A(fb, b) >> 16) + ((unsigned int)fb * OP_B(fb, b) >> 16));
a = STORE_PIXEL_3(fg, ((unsigned int)a * OP_A(fa, a) >> 16) + ((unsigned int)fa * OP_B(fa, a) >> 16));
result = SRGBA_TO_PIXEL(r, g, b, a);
}
#undef FNAME_S
#endif
#undef FNAME
#undef OP_A
#undef OP_B
#undef STORE_PIXEL_0

View File

@ -63,6 +63,9 @@ for op_a in Operands:
for mask in range(0, 16):
fname = getFname(op_a, op_b, mask)
print >> code, '#define FNAME(name) %s' % (fname)
if mask & (1 | 2 | 3):
print >> code, '#define FNAME_S(name) %s_s' % (fname)
print >> code, '#define OP_A(f, i) ((unsigned int)(%s))' % (CodeTable[op_a])
print >> code, '#define OP_B(f, i) ((unsigned int)(%s))' % (CodeTable[op_b])
for b in range(0, 4):
@ -91,3 +94,22 @@ for op_a in Operands:
print >> code, ' },'
print >> code, '};'
print >> code
# Now do this again, but for the sRGB function pointers.
print >> table, 'extern const ZB_storePixelFunc store_pixel_funcs_sRGB%s;' % (arraySize)
print >> code, 'const ZB_storePixelFunc store_pixel_funcs_sRGB%s = {' % (arraySize)
for op_a in Operands:
print >> code, ' {'
for op_b in Operands:
print >> code, ' {'
for mask in range(0, 16):
fname = getFname(op_a, op_b, mask)
if mask & (1 | 2 | 3):
print >> code, ' %s_s,' % (fname)
else:
print >> code, ' %s,' % (fname)
print >> code, ' },'
print >> code, ' },'
print >> code, '};'

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,4 @@
/* This file is generated code--do not edit. See store_pixel.py. */
extern const ZB_storePixelFunc store_pixel_funcs[14][14][16];
extern const ZB_storePixelFunc store_pixel_funcs_sRGB[14][14][16];

View File

@ -226,31 +226,35 @@ clear(DrawableRegion *clearable) {
(!clearable->get_clear_stencil_active())) {
return;
}
set_state_and_transform(RenderState::make_empty(), _internal_transform);
bool clear_color = false;
int r, g, b, a;
PIXEL color = 0;
if (clearable->get_clear_color_active()) {
LColor v = clearable->get_clear_color();
r = (int)(v[0] * 0xffff);
g = (int)(v[1] * 0xffff);
b = (int)(v[2] * 0xffff);
a = (int)(v[3] * 0xffff);
if (_current_properties->get_srgb_color()) {
color = SRGBA_TO_PIXEL(
(v[0] * 0xffff), (v[1] * 0xffff),
(v[2] * 0xffff), (v[3] * 0xffff));
} else {
color = RGBA_TO_PIXEL(
(v[0] * 0xffff), (v[1] * 0xffff),
(v[2] * 0xffff), (v[3] * 0xffff));
}
clear_color = true;
}
bool clear_z = false;
int z;
int z = 0;
if (clearable->get_clear_depth_active()) {
// We ignore the specified depth clear value, since we don't
// support alternate depth compare functions anyway.
z = 0;
clear_z = true;
}
ZB_clear_viewport(_c->zb, clear_z, z,
clear_color, r, g, b, a,
ZB_clear_viewport(_c->zb, clear_z, z, clear_color, color,
_c->viewport.xmin, _c->viewport.ymin,
_c->viewport.xsize, _c->viewport.ysize);
}
@ -280,7 +284,7 @@ prepare_display_region(DisplayRegionPipelineReader *dr) {
if (_aux_frame_buffer == (ZBuffer *)NULL) {
_aux_frame_buffer = ZB_open(xsize, ysize, ZB_MODE_RGBA, 0, 0, 0, 0);
} else if (_aux_frame_buffer->xsize < xsize || _aux_frame_buffer->ysize < ysize) {
ZB_resize(_aux_frame_buffer, NULL,
ZB_resize(_aux_frame_buffer, NULL,
max(_aux_frame_buffer->xsize, xsize),
max(_aux_frame_buffer->ysize, ysize));
}
@ -297,7 +301,7 @@ prepare_display_region(DisplayRegionPipelineReader *dr) {
_c->viewport.ysize = ysize;
set_scissor(0.0f, 1.0f, 0.0f, 1.0f);
nassertv(xmin >= 0 && xmin < _c->zb->xsize &&
nassertv(xmin >= 0 && xmin < _c->zb->xsize &&
ymin >= 0 && ymin < _c->zb->ysize &&
xmin + xsize >= 0 && xmin + xsize <= _c->zb->xsize &&
ymin + ysize >= 0 && ymin + ysize <= _c->zb->ysize);
@ -736,7 +740,7 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
for (i = 0; i < num_used_vertices; ++i) {
GLVertex *v = &_vertices[i];
const LVecBase4 &d = rvertex.get_data4();
v->coord.v[0] = d[0];
v->coord.v[1] = d[1];
v->coord.v[2] = d[2];
@ -755,7 +759,7 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
_c->current_color.v[1] = d[1] * s[1];
_c->current_color.v[2] = d[2] * s[2];
_c->current_color.v[3] = d[3] * s[3];
if (_color_material_flags) {
if (_color_material_flags & CMF_ambient) {
_c->materials[0].ambient = _c->current_color;
@ -794,6 +798,8 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
// Set up the appropriate function callback for filling triangles,
// according to the current state.
bool srgb_blend = _current_properties->get_srgb_color();
int depth_write_state = 0; // zon
const DepthWriteAttrib *target_depth_write = DCAST(DepthWriteAttrib, _target_rs->get_attrib_def(DepthWriteAttrib::get_class_slot()));
if (target_depth_write->get_mode() != DepthWriteAttrib::M_on) {
@ -805,11 +811,23 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
const ColorWriteAttrib *target_color_write = DCAST(ColorWriteAttrib, _target_rs->get_attrib_def(ColorWriteAttrib::get_class_slot()));
unsigned int color_channels =
target_color_write->get_channels() & _color_write_mask;
if (color_channels != ColorWriteAttrib::C_all) {
if (color_channels == ColorWriteAttrib::C_all) {
if (srgb_blend) {
color_write_state = 4; // csstore
} else {
color_write_state = 0; // cstore
}
} else {
// Implement a color mask.
int op_a = get_color_blend_op(ColorBlendAttrib::O_one);
int op_b = get_color_blend_op(ColorBlendAttrib::O_zero);
_c->zb->store_pix_func = store_pixel_funcs[op_a][op_b][color_channels];
if (srgb_blend) {
_c->zb->store_pix_func = store_pixel_funcs_sRGB[op_a][op_b][color_channels];
} else {
_c->zb->store_pix_func = store_pixel_funcs[op_a][op_b][color_channels];
}
color_write_state = 2; // cgeneral
}
@ -817,12 +835,22 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
switch (target_transparency->get_mode()) {
case TransparencyAttrib::M_alpha:
case TransparencyAttrib::M_dual:
color_write_state = 1; // cblend
if (color_channels != ColorWriteAttrib::C_all) {
if (color_channels == ColorWriteAttrib::C_all) {
if (srgb_blend) {
color_write_state = 5; // csblend
} else {
color_write_state = 1; // cblend
}
} else {
// Implement a color mask, with alpha blending.
int op_a = get_color_blend_op(ColorBlendAttrib::O_incoming_alpha);
int op_b = get_color_blend_op(ColorBlendAttrib::O_one_minus_incoming_alpha);
_c->zb->store_pix_func = store_pixel_funcs[op_a][op_b][color_channels];
if (srgb_blend) {
_c->zb->store_pix_func = store_pixel_funcs_sRGB[op_a][op_b][color_channels];
} else {
_c->zb->store_pix_func = store_pixel_funcs[op_a][op_b][color_channels];
}
color_write_state = 2; // cgeneral
}
break;
@ -835,15 +863,20 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
if (target_color_blend->get_mode() == ColorBlendAttrib::M_add) {
// If we have a color blend set that we can support, it overrides
// the transparency set.
int op_a = get_color_blend_op(target_color_blend->get_operand_a());
int op_b = get_color_blend_op(target_color_blend->get_operand_b());
_c->zb->store_pix_func = store_pixel_funcs[op_a][op_b][color_channels];
LColor c = target_color_blend->get_color();
_c->zb->blend_r = (int)(c[0] * ZB_POINT_RED_MAX);
_c->zb->blend_g = (int)(c[1] * ZB_POINT_GREEN_MAX);
_c->zb->blend_b = (int)(c[2] * ZB_POINT_BLUE_MAX);
_c->zb->blend_a = (int)(c[3] * ZB_POINT_ALPHA_MAX);
int op_a = get_color_blend_op(target_color_blend->get_operand_a());
int op_b = get_color_blend_op(target_color_blend->get_operand_b());
if (srgb_blend) {
_c->zb->store_pix_func = store_pixel_funcs_sRGB[op_a][op_b][color_channels];
} else {
_c->zb->store_pix_func = store_pixel_funcs[op_a][op_b][color_channels];
}
color_write_state = 2; // cgeneral
}
@ -882,7 +915,7 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
depth_test_state = 0; // zless
_c->depth_test = 0;
}
const ShadeModelAttrib *target_shade_model = DCAST(ShadeModelAttrib, _target_rs->get_attrib_def(ShadeModelAttrib::get_class_slot()));
ShadeModelAttrib::Mode shade_model = target_shade_model->get_mode();
if (!needs_normal && !needs_color) {
@ -939,7 +972,7 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
pixel_count_smooth_multitex2 = 0;
pixel_count_smooth_multitex3 = 0;
#endif // DO_PSTATS
return true;
}

View File

@ -130,7 +130,7 @@ ZB_resize(ZBuffer * zb, void *frame_buffer, int xsize, int ysize) {
}
}
static void
static void
ZB_copyBuffer(const ZBuffer * zb,
void *buf,
int linesize) {
@ -210,7 +210,7 @@ static void ZB_copyFrameBufferRGB24(const ZBuffer * zb,
int y, n;
fprintf(stderr, "copyFrameBufferRGB24\n");
q = zb->pbuf;
p1 = (unsigned char *) buf;
@ -282,12 +282,12 @@ void ZB_zoomFrameBuffer(ZBuffer *dest, int dest_xmin, int dest_ymin, int dest_xs
const ZBuffer *source, int source_xmin, int source_ymin, int source_xsize, int source_ysize) {
int tyinc = dest->linesize / PSZB;
int fyinc = source->linesize / PSZB;
int fyt = 0;
for (int ty = 0; ty < dest_ysize; ++ty) {
int fy = fyt / dest_ysize;
fyt += source_ysize;
PIXEL *tp = dest->pbuf + dest_xmin + (dest_ymin + ty) * tyinc;
PIXEL *fp = source->pbuf + source_xmin + (source_ymin + fy) * fyinc;
ZPOINT *tz = dest->zbuf + dest_xmin + (dest_ymin + ty) * dest->xsize;
@ -296,7 +296,7 @@ void ZB_zoomFrameBuffer(ZBuffer *dest, int dest_xmin, int dest_ymin, int dest_xs
for (int tx = 0; tx < dest_xsize; ++tx) {
int fx = fxt / dest_xsize;
fxt += source_xsize;
tp[tx] = fp[fx];
tz[tx] = fz[fx];
}
@ -384,17 +384,14 @@ memset_RGB24(void *adr,int r, int v, int b,long count) {
}
void
ZB_clear(ZBuffer * zb, int clear_z, ZPOINT z,
int clear_color, unsigned int r, unsigned int g, unsigned int b, unsigned int a) {
unsigned int color;
ZB_clear(ZBuffer * zb, int clear_z, ZPOINT z, int clear_color, PIXEL color) {
int y;
PIXEL *pp;
if (clear_z) {
memset(zb->zbuf, 0, zb->xsize * zb->ysize * sizeof(ZPOINT));
}
if (clear_color) {
color = RGBA_TO_PIXEL(r, g, b, a);
pp = zb->pbuf;
for (y = 0; y < zb->ysize; y++) {
memset_l(pp, color, zb->xsize);
@ -404,15 +401,13 @@ ZB_clear(ZBuffer * zb, int clear_z, ZPOINT z,
}
void
ZB_clear_viewport(ZBuffer * zb, int clear_z, ZPOINT z,
int clear_color, unsigned int r, unsigned int g, unsigned int b, unsigned int a,
ZB_clear_viewport(ZBuffer * zb, int clear_z, ZPOINT z, int clear_color, PIXEL color,
int xmin, int ymin, int xsize, int ysize) {
unsigned int color;
int y;
PIXEL *pp;
ZPOINT *zz;
nassertv(xmin >= 0 && xmin < zb->xsize &&
nassertv(xmin >= 0 && xmin < zb->xsize &&
ymin >= 0 && ymin < zb->ysize &&
xmin + xsize >= 0 && xmin + xsize <= zb->xsize &&
ymin + ysize >= 0 && ymin + ysize <= zb->ysize);
@ -425,7 +420,6 @@ ZB_clear_viewport(ZBuffer * zb, int clear_z, ZPOINT z,
}
}
if (clear_color) {
color = RGBA_TO_PIXEL(r, g, b, a);
pp = zb->pbuf + xmin + ymin * (zb->linesize / PSZB);
for (y = 0; y < ysize; ++y) {
memset_l(pp, color, xsize);

View File

@ -7,6 +7,7 @@
#include "zfeatures.h"
#include "pbitops.h"
#include "srgb_tables.h"
typedef unsigned int ZPOINT;
#define ZB_Z_BITS 20
@ -72,10 +73,19 @@ typedef unsigned int ZPOINT;
((((unsigned int)(a) << 16) & 0xff000000) | (((unsigned int)(r) << 8) & 0xff0000) | ((unsigned int)(g) & 0xff00) | ((unsigned int)(b) >> 8))
#define RGBA8_TO_PIXEL(r,g,b,a) \
((((unsigned int)(a) << 24) & 0xff000000) | (((unsigned int)(r) << 16) & 0xff0000) | (((unsigned int)(g) << 8) & 0xff00) | (unsigned int)(b))
#define SRGB_TO_PIXEL(r,g,b) \
((encode_sRGB[(unsigned int)(r) >> 4] << 16) | (encode_sRGB10[(unsigned int)(g) >> 4] << 8) | (encode_sRGB[(unsigned int)(b) >> 4]))
#define SRGBA_TO_PIXEL(r,g,b,a) \
((((unsigned int)(a) << 16) & 0xff000000) | (encode_sRGB[(unsigned int)(r) >> 4] << 16) | (encode_sRGB[(unsigned int)(g) >> 4] << 8) | (encode_sRGB[(unsigned int)(b) >> 4]))
#define PIXEL_R(p) (((unsigned int)(p) & 0xff0000) >> 8)
#define PIXEL_G(p) ((unsigned int)(p) & 0xff00)
#define PIXEL_B(p) (((unsigned int)(p) & 0x00ff) << 8)
#define PIXEL_A(p) (((unsigned int)(p) & 0xff000000) >> 16)
#define PIXEL_SR(p) (decode_sRGB[((unsigned int)(p) & 0xff0000) >> 16])
#define PIXEL_SG(p) (decode_sRGB[((unsigned int)(p) & 0xff00) >> 8])
#define PIXEL_SB(p) (decode_sRGB[((unsigned int)(p) & 0x00ff)])
typedef unsigned int PIXEL;
#define PSZB 4
#define PSZSH 5
@ -97,13 +107,24 @@ typedef unsigned int PIXEL;
#define PCOMPONENT_BLEND(c1, c2, a2) \
((((unsigned int)(c1) * ((unsigned int)0xffff - (unsigned int)(a2)) + (unsigned int)(c2) * (unsigned int)(a2))) >> 16)
#define PIXEL_BLEND(r1, g1, b1, r2, g2, b2, a2) \
#define _BLEND_RGB(r1, g1, b1, r2, g2, b2, a2) \
RGBA_TO_PIXEL(PCOMPONENT_BLEND(r1, r2, a2), \
PCOMPONENT_BLEND(g1, g2, a2), \
PCOMPONENT_BLEND(b1, b2, a2), \
a2)
#define _BLEND_SRGB(r1, g1, b1, r2, g2, b2, a2) \
SRGBA_TO_PIXEL(PCOMPONENT_BLEND(r1, r2, a2), \
PCOMPONENT_BLEND(g1, g2, a2), \
PCOMPONENT_BLEND(b1, b2, a2), \
a2)
#define PIXEL_BLEND_RGB(rgb, r, g, b, a) \
PIXEL_BLEND(PIXEL_R(rgb), PIXEL_G(rgb), PIXEL_B(rgb), r, g, b, a)
_BLEND_RGB(PIXEL_R(rgb), PIXEL_G(rgb), PIXEL_B(rgb), r, g, b, a)
#define PIXEL_BLEND_SRGB(rgb, r, g, b, a) \
_BLEND_SRGB(PIXEL_SR(rgb), PIXEL_SG(rgb), PIXEL_SB(rgb), r, g, b, a)
typedef struct {
PIXEL *pixmap;
@ -120,7 +141,7 @@ typedef void (*ZB_storePixelFunc)(ZBuffer *zb, PIXEL &result, int r, int g, int
typedef PIXEL (*ZB_lookupTextureFunc)(ZTextureDef *texture_def, int s, int t, unsigned int level, unsigned int level_dx);
typedef int (*ZB_texWrapFunc)(int coord, int max_coord);
typedef int (*ZB_texWrapFunc)(int coord, int max_coord);
struct ZTextureDef {
ZTextureLevel *levels;
@ -138,11 +159,11 @@ struct ZBuffer {
int xsize,ysize;
int linesize; /* line size, in bytes */
int mode;
ZPOINT *zbuf;
PIXEL *pbuf;
int frame_buffer_allocated;
int nb_colors;
unsigned char *dctable;
int *ctable;
@ -156,14 +177,14 @@ struct ZBufferPoint {
int x,y,z; /* integer coordinates in the zbuffer */
int s,t; /* coordinates for the mapping */
int r,g,b,a; /* color indexes */
PN_stdfloat sz,tz; /* temporary coordinates for mapping */
int sa, ta; /* mapping coordinates for optional second texture stage */
PN_stdfloat sza,tza;
PN_stdfloat sza,tza;
int sb, tb; /* mapping coordinates for optional third texture stage */
PN_stdfloat szb,tzb;
PN_stdfloat szb,tzb;
};
/* zbuffer.c */
@ -200,10 +221,8 @@ ZBuffer *ZB_open(int xsize,int ysize,int mode,
void ZB_close(ZBuffer *zb);
void ZB_resize(ZBuffer *zb,void *frame_buffer,int xsize,int ysize);
void ZB_clear(ZBuffer *zb, int clear_z, ZPOINT z,
int clear_color, unsigned int r, unsigned int g, unsigned int b, unsigned int a);
void ZB_clear_viewport(ZBuffer * zb, int clear_z, ZPOINT z,
int clear_color, unsigned int r, unsigned int g, unsigned int b, unsigned int a,
void ZB_clear(ZBuffer *zb, int clear_z, ZPOINT z, int clear_color, PIXEL color);
void ZB_clear_viewport(ZBuffer * zb, int clear_z, ZPOINT z, int clear_color, PIXEL color,
int xmin, int ymin, int xsize, int ysize);
PIXEL lookup_texture_nearest(ZTextureDef *texture_def, int s, int t, unsigned int level, unsigned int level_dx);

View File

@ -20,7 +20,7 @@ Options = [
[ 'zon', 'zoff' ],
# color write
[ 'cstore', 'cblend', 'cgeneral', 'coff' ],
[ 'cstore', 'cblend', 'cgeneral', 'coff', 'csstore', 'csblend' ],
# alpha test
[ 'anone', 'aless', 'amore' ],
@ -64,6 +64,10 @@ CodeTable = {
'cgeneral' : '#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)',
'coff' : '#define STORE_PIX(pix, rgb, r, g, b, a)',
# color write, sRGB
'csstore' : '#define STORE_PIX(pix, rgb, r, g, b, a) (pix) = SRGBA_TO_PIXEL(r, g, b, a)',
'csblend' : '#define STORE_PIX(pix, rgb, r, g, b, a) (pix) = PIXEL_BLEND_SRGB(pix, r, g, b, a)',
# alpha test
'anone' : '#define ACMP(zb, a) 1',
'aless' : '#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)',
@ -264,6 +268,3 @@ print >> table_decl, 'extern const ZB_fillTriangleFunc fill_tri_funcs%s;' % (arr
writeTableEntry([])
print >> table_def, '};'

View File

@ -348,8 +348,182 @@
#define FNAME(name) FB_triangle_zon_cblend_amore_zless_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zon_cgeneral_anone_znone_tnearest_ ## name
#include "ztriangle_two.h"
ZB_fillTriangleFunc ztriangle_code_1[540] = {
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zon_cgeneral_anone_znone_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zon_cgeneral_anone_znone_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zon_cgeneral_anone_zless_tnearest_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zon_cgeneral_anone_zless_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zon_cgeneral_anone_zless_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zon_cgeneral_aless_znone_tnearest_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zon_cgeneral_aless_znone_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zon_cgeneral_aless_znone_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zon_cgeneral_aless_zless_tnearest_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zon_cgeneral_aless_zless_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zon_cgeneral_aless_zless_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zon_cgeneral_amore_znone_tnearest_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zon_cgeneral_amore_znone_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zon_cgeneral_amore_znone_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zon_cgeneral_amore_zless_tnearest_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zon_cgeneral_amore_zless_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z) (zpix) = (z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zon_cgeneral_amore_zless_tgeneral_ ## name
#include "ztriangle_two.h"
ZB_fillTriangleFunc ztriangle_code_1[810] = {
FB_triangle_zon_cstore_anone_znone_tnearest_white_untextured,
FB_triangle_zon_cstore_anone_znone_tnearest_white_textured,
FB_triangle_zon_cstore_anone_znone_tnearest_white_perspective,
@ -890,4 +1064,274 @@ ZB_fillTriangleFunc ztriangle_code_1[540] = {
FB_triangle_zon_cblend_amore_zless_tgeneral_smooth_perspective,
FB_triangle_zon_cblend_amore_zless_tgeneral_smooth_multitex2,
FB_triangle_zon_cblend_amore_zless_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_znone_tnearest_white_untextured,
FB_triangle_zon_cgeneral_anone_znone_tnearest_white_textured,
FB_triangle_zon_cgeneral_anone_znone_tnearest_white_perspective,
FB_triangle_zon_cgeneral_anone_znone_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_znone_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_znone_tnearest_flat_untextured,
FB_triangle_zon_cgeneral_anone_znone_tnearest_flat_textured,
FB_triangle_zon_cgeneral_anone_znone_tnearest_flat_perspective,
FB_triangle_zon_cgeneral_anone_znone_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_znone_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_znone_tnearest_smooth_untextured,
FB_triangle_zon_cgeneral_anone_znone_tnearest_smooth_textured,
FB_triangle_zon_cgeneral_anone_znone_tnearest_smooth_perspective,
FB_triangle_zon_cgeneral_anone_znone_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_znone_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_white_untextured,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_white_textured,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_white_perspective,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_flat_untextured,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_flat_textured,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_flat_perspective,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_smooth_untextured,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_smooth_textured,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_smooth_perspective,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_znone_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_white_untextured,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_white_textured,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_white_perspective,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_flat_untextured,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_flat_textured,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_flat_perspective,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_smooth_untextured,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_smooth_textured,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_smooth_perspective,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_znone_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_zless_tnearest_white_untextured,
FB_triangle_zon_cgeneral_anone_zless_tnearest_white_textured,
FB_triangle_zon_cgeneral_anone_zless_tnearest_white_perspective,
FB_triangle_zon_cgeneral_anone_zless_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_zless_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_zless_tnearest_flat_untextured,
FB_triangle_zon_cgeneral_anone_zless_tnearest_flat_textured,
FB_triangle_zon_cgeneral_anone_zless_tnearest_flat_perspective,
FB_triangle_zon_cgeneral_anone_zless_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_zless_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_zless_tnearest_smooth_untextured,
FB_triangle_zon_cgeneral_anone_zless_tnearest_smooth_textured,
FB_triangle_zon_cgeneral_anone_zless_tnearest_smooth_perspective,
FB_triangle_zon_cgeneral_anone_zless_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_zless_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_white_untextured,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_white_textured,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_white_perspective,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_flat_untextured,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_flat_textured,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_flat_perspective,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_smooth_untextured,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_smooth_textured,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_smooth_perspective,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_zless_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_white_untextured,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_white_textured,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_white_perspective,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_flat_untextured,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_flat_textured,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_flat_perspective,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_smooth_untextured,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_smooth_textured,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_smooth_perspective,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_anone_zless_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_znone_tnearest_white_untextured,
FB_triangle_zon_cgeneral_aless_znone_tnearest_white_textured,
FB_triangle_zon_cgeneral_aless_znone_tnearest_white_perspective,
FB_triangle_zon_cgeneral_aless_znone_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_znone_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_znone_tnearest_flat_untextured,
FB_triangle_zon_cgeneral_aless_znone_tnearest_flat_textured,
FB_triangle_zon_cgeneral_aless_znone_tnearest_flat_perspective,
FB_triangle_zon_cgeneral_aless_znone_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_znone_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_znone_tnearest_smooth_untextured,
FB_triangle_zon_cgeneral_aless_znone_tnearest_smooth_textured,
FB_triangle_zon_cgeneral_aless_znone_tnearest_smooth_perspective,
FB_triangle_zon_cgeneral_aless_znone_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_znone_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_white_untextured,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_white_textured,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_white_perspective,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_flat_untextured,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_flat_textured,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_flat_perspective,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_smooth_untextured,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_smooth_textured,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_smooth_perspective,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_znone_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_white_untextured,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_white_textured,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_white_perspective,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_flat_untextured,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_flat_textured,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_flat_perspective,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_smooth_untextured,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_smooth_textured,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_smooth_perspective,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_znone_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_zless_tnearest_white_untextured,
FB_triangle_zon_cgeneral_aless_zless_tnearest_white_textured,
FB_triangle_zon_cgeneral_aless_zless_tnearest_white_perspective,
FB_triangle_zon_cgeneral_aless_zless_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_zless_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_zless_tnearest_flat_untextured,
FB_triangle_zon_cgeneral_aless_zless_tnearest_flat_textured,
FB_triangle_zon_cgeneral_aless_zless_tnearest_flat_perspective,
FB_triangle_zon_cgeneral_aless_zless_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_zless_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_zless_tnearest_smooth_untextured,
FB_triangle_zon_cgeneral_aless_zless_tnearest_smooth_textured,
FB_triangle_zon_cgeneral_aless_zless_tnearest_smooth_perspective,
FB_triangle_zon_cgeneral_aless_zless_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_zless_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_white_untextured,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_white_textured,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_white_perspective,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_flat_untextured,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_flat_textured,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_flat_perspective,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_smooth_untextured,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_smooth_textured,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_smooth_perspective,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_zless_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_white_untextured,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_white_textured,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_white_perspective,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_flat_untextured,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_flat_textured,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_flat_perspective,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_smooth_untextured,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_smooth_textured,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_smooth_perspective,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_aless_zless_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_znone_tnearest_white_untextured,
FB_triangle_zon_cgeneral_amore_znone_tnearest_white_textured,
FB_triangle_zon_cgeneral_amore_znone_tnearest_white_perspective,
FB_triangle_zon_cgeneral_amore_znone_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_znone_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_znone_tnearest_flat_untextured,
FB_triangle_zon_cgeneral_amore_znone_tnearest_flat_textured,
FB_triangle_zon_cgeneral_amore_znone_tnearest_flat_perspective,
FB_triangle_zon_cgeneral_amore_znone_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_znone_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_znone_tnearest_smooth_untextured,
FB_triangle_zon_cgeneral_amore_znone_tnearest_smooth_textured,
FB_triangle_zon_cgeneral_amore_znone_tnearest_smooth_perspective,
FB_triangle_zon_cgeneral_amore_znone_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_znone_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_white_untextured,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_white_textured,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_white_perspective,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_flat_untextured,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_flat_textured,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_flat_perspective,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_smooth_untextured,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_smooth_textured,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_smooth_perspective,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_znone_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_white_untextured,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_white_textured,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_white_perspective,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_flat_untextured,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_flat_textured,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_flat_perspective,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_smooth_untextured,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_smooth_textured,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_smooth_perspective,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_znone_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_zless_tnearest_white_untextured,
FB_triangle_zon_cgeneral_amore_zless_tnearest_white_textured,
FB_triangle_zon_cgeneral_amore_zless_tnearest_white_perspective,
FB_triangle_zon_cgeneral_amore_zless_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_zless_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_zless_tnearest_flat_untextured,
FB_triangle_zon_cgeneral_amore_zless_tnearest_flat_textured,
FB_triangle_zon_cgeneral_amore_zless_tnearest_flat_perspective,
FB_triangle_zon_cgeneral_amore_zless_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_zless_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_zless_tnearest_smooth_untextured,
FB_triangle_zon_cgeneral_amore_zless_tnearest_smooth_textured,
FB_triangle_zon_cgeneral_amore_zless_tnearest_smooth_perspective,
FB_triangle_zon_cgeneral_amore_zless_tnearest_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_zless_tnearest_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_white_untextured,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_white_textured,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_white_perspective,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_flat_untextured,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_flat_textured,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_flat_perspective,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_smooth_untextured,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_smooth_textured,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_smooth_perspective,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_zless_tmipmap_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_white_untextured,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_white_textured,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_white_perspective,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_flat_untextured,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_flat_textured,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_flat_perspective,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_smooth_multitex3,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_smooth_untextured,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_smooth_textured,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_smooth_perspective,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_smooth_multitex2,
FB_triangle_zon_cgeneral_amore_zless_tgeneral_smooth_multitex3,
};

File diff suppressed because it is too large Load Diff

View File

@ -348,8 +348,182 @@
#define FNAME(name) FB_triangle_zoff_cblend_amore_zless_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zoff_cgeneral_anone_znone_tnearest_ ## name
#include "ztriangle_two.h"
ZB_fillTriangleFunc ztriangle_code_3[540] = {
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zoff_cgeneral_anone_znone_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zoff_cgeneral_anone_znone_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zoff_cgeneral_anone_zless_tnearest_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zoff_cgeneral_anone_zless_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) 1
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zoff_cgeneral_anone_zless_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zoff_cgeneral_aless_znone_tnearest_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zoff_cgeneral_aless_znone_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zoff_cgeneral_aless_znone_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zoff_cgeneral_aless_zless_tnearest_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zoff_cgeneral_aless_zless_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) < (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zoff_cgeneral_aless_zless_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zoff_cgeneral_amore_znone_tnearest_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zoff_cgeneral_amore_znone_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) 1
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zoff_cgeneral_amore_znone_tgeneral_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_NEAREST(texture_def, s, t)
#define FNAME(name) FB_triangle_zoff_cgeneral_amore_zless_tnearest_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ZB_LOOKUP_TEXTURE_MIPMAP_NEAREST(texture_def, s, t, level)
#define FNAME(name) FB_triangle_zoff_cgeneral_amore_zless_tmipmap_ ## name
#include "ztriangle_two.h"
#define STORE_Z(zpix, z)
#define STORE_PIX(pix, rgb, r, g, b, a) zb->store_pix_func(zb, pix, r, g, b, a)
#define ACMP(zb, a) (((int)(a)) > (zb)->reference_alpha)
#define ZCMP(zpix, z) ((ZPOINT)(zpix) < (ZPOINT)(z))
#define CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx) DO_CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx)
#define INTERP_MIPMAP
#define ZB_LOOKUP_TEXTURE(texture_def, s, t, level, level_dx) ((level == 0) ? (texture_def)->tex_magfilter_func(texture_def, s, t, level, level_dx) : (texture_def)->tex_minfilter_func(texture_def, s, t, level, level_dx))
#define FNAME(name) FB_triangle_zoff_cgeneral_amore_zless_tgeneral_ ## name
#include "ztriangle_two.h"
ZB_fillTriangleFunc ztriangle_code_3[810] = {
FB_triangle_zoff_cstore_anone_znone_tnearest_white_untextured,
FB_triangle_zoff_cstore_anone_znone_tnearest_white_textured,
FB_triangle_zoff_cstore_anone_znone_tnearest_white_perspective,
@ -890,4 +1064,274 @@ ZB_fillTriangleFunc ztriangle_code_3[540] = {
FB_triangle_zoff_cblend_amore_zless_tgeneral_smooth_perspective,
FB_triangle_zoff_cblend_amore_zless_tgeneral_smooth_multitex2,
FB_triangle_zoff_cblend_amore_zless_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_white_untextured,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_white_textured,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_white_perspective,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_flat_untextured,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_flat_textured,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_flat_perspective,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_smooth_untextured,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_smooth_textured,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_smooth_perspective,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_znone_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_white_untextured,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_white_textured,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_white_perspective,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_flat_untextured,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_flat_textured,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_flat_perspective,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_smooth_untextured,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_smooth_textured,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_smooth_perspective,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_znone_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_white_untextured,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_white_textured,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_white_perspective,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_flat_untextured,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_flat_textured,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_flat_perspective,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_smooth_untextured,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_smooth_textured,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_smooth_perspective,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_znone_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_white_untextured,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_white_textured,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_white_perspective,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_flat_untextured,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_flat_textured,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_flat_perspective,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_smooth_untextured,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_smooth_textured,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_smooth_perspective,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_zless_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_white_untextured,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_white_textured,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_white_perspective,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_flat_untextured,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_flat_textured,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_flat_perspective,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_smooth_untextured,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_smooth_textured,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_smooth_perspective,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_zless_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_white_untextured,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_white_textured,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_white_perspective,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_flat_untextured,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_flat_textured,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_flat_perspective,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_smooth_untextured,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_smooth_textured,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_smooth_perspective,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_anone_zless_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_white_untextured,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_white_textured,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_white_perspective,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_flat_untextured,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_flat_textured,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_flat_perspective,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_smooth_untextured,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_smooth_textured,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_smooth_perspective,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_znone_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_white_untextured,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_white_textured,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_white_perspective,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_flat_untextured,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_flat_textured,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_flat_perspective,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_smooth_untextured,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_smooth_textured,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_smooth_perspective,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_znone_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_white_untextured,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_white_textured,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_white_perspective,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_flat_untextured,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_flat_textured,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_flat_perspective,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_smooth_untextured,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_smooth_textured,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_smooth_perspective,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_znone_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_white_untextured,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_white_textured,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_white_perspective,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_flat_untextured,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_flat_textured,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_flat_perspective,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_smooth_untextured,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_smooth_textured,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_smooth_perspective,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_zless_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_white_untextured,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_white_textured,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_white_perspective,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_flat_untextured,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_flat_textured,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_flat_perspective,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_smooth_untextured,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_smooth_textured,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_smooth_perspective,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_zless_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_white_untextured,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_white_textured,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_white_perspective,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_flat_untextured,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_flat_textured,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_flat_perspective,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_smooth_untextured,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_smooth_textured,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_smooth_perspective,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_aless_zless_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_white_untextured,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_white_textured,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_white_perspective,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_flat_untextured,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_flat_textured,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_flat_perspective,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_smooth_untextured,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_smooth_textured,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_smooth_perspective,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_znone_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_white_untextured,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_white_textured,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_white_perspective,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_flat_untextured,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_flat_textured,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_flat_perspective,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_smooth_untextured,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_smooth_textured,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_smooth_perspective,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_znone_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_white_untextured,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_white_textured,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_white_perspective,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_flat_untextured,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_flat_textured,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_flat_perspective,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_smooth_untextured,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_smooth_textured,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_smooth_perspective,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_znone_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_white_untextured,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_white_textured,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_white_perspective,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_flat_untextured,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_flat_textured,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_flat_perspective,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_smooth_untextured,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_smooth_textured,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_smooth_perspective,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_zless_tnearest_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_white_untextured,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_white_textured,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_white_perspective,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_flat_untextured,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_flat_textured,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_flat_perspective,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_smooth_untextured,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_smooth_textured,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_smooth_perspective,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_zless_tmipmap_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_white_untextured,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_white_textured,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_white_perspective,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_flat_untextured,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_flat_textured,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_flat_perspective,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_smooth_multitex3,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_smooth_untextured,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_smooth_textured,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_smooth_perspective,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_smooth_multitex2,
FB_triangle_zoff_cgeneral_amore_zless_tgeneral_smooth_multitex3,
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,3 @@
/* This file is generated code--do not edit. See ztriangle.py. */
extern const ZB_fillTriangleFunc fill_tri_funcs[2][4][3][2][3][3][5];
extern const ZB_fillTriangleFunc fill_tri_funcs[2][6][3][2][3][3][5];