fix: restore rooftop ground on Intel and fill canal frontage
Tessellate terrain and light-map surfaces for vertex-fog drivers, render animated water from the tiled mesh, request accurate fog and extend renderer diagnostics. Add canal-front buildings, raised quays, trees and benches while preserving the terrace and native runtime. Update native regression coverage and shipping executables. Exclude laptop screenshots and local runtime data.
This commit is contained in:
parent
41ba8f46ed
commit
1006ba444b
19 changed files with 3005 additions and 32 deletions
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
|
@ -2,7 +2,7 @@
|
|||
"format": "RGM1: count/bytes + material/3*(position,normal,uv)",
|
||||
"gl_axes": "X/Z/Y; normals explicitly outward; no runtime model engine",
|
||||
"triangles": {
|
||||
"scene": 35386,
|
||||
"scene": 44400,
|
||||
"car": 360,
|
||||
"boat": 170
|
||||
},
|
||||
|
|
@ -6660,6 +6660,6 @@
|
|||
true
|
||||
]
|
||||
],
|
||||
"removed_invisible_triangles": 18309,
|
||||
"removed_invisible_triangles": 20717,
|
||||
"front_face": "CCW"
|
||||
}
|
||||
|
|
|
|||
BIN
bin/poker.exe
BIN
bin/poker.exe
Binary file not shown.
|
|
@ -8,7 +8,7 @@ namespace AssemblerCasinoLauncher
|
|||
{
|
||||
static class Program
|
||||
{
|
||||
const string ExpectedPokerSha256 = "63C04B59D74772621A7563EA70DFA6764C60684459EE7D046AF30B555A01FF15";
|
||||
const string ExpectedPokerSha256 = "CF04525CD5C9C87412001FF4F4CBBCA1C7019F71A53FEBA3BB8051323B0EB634";
|
||||
|
||||
[STAThread]
|
||||
static void Main()
|
||||
|
|
|
|||
Binary file not shown.
BIN
dist/Assembler Casino.exe
vendored
BIN
dist/Assembler Casino.exe
vendored
Binary file not shown.
|
|
@ -83,7 +83,13 @@ readback synchronisation, without a redundant preceding glFinish.
|
|||
and gameplay do not change with the render profile; other rooms are unaffected.
|
||||
- The offline mesh packer discards only triangles that face away from every
|
||||
possible rooftop eye position. Runtime back-face culling handles head turns.
|
||||
The static mesh now contains 35,386 triangles instead of 53,695.
|
||||
The static mesh, including driver-safe ground and canal frontage, stays under 48,000
|
||||
triangles. Never-visible faces are pruned before shipping.
|
||||
- Terrain and light-map triangles crossing the near district are at most 64 m
|
||||
wide, with finer cells near the terrace. This avoids relying on per-fragment
|
||||
fog for multi-kilometre polygons on integrated OpenGL drivers. Water animation
|
||||
uses its own display list from the same tessellated mesh, not two giant quads.
|
||||
GL_NICEST requests accurate fog, but the geometry remains safe if ignored.
|
||||
- CPU foreground surfaces use projected screen bounds and camera-facing box
|
||||
sides. The final frame avoids an extra GDI scaling/alpha-blending pass.
|
||||
- Mipmap generation is optional on older OpenGL drivers. If hardware rendering
|
||||
|
|
@ -97,6 +103,12 @@ Integrated Intel graphics use shared system memory; the small dedicated-memory
|
|||
figure alone is not a useful rendering budget. Actual laptop performance must be
|
||||
checked on that machine, not inferred from the desktop benchmark.
|
||||
|
||||
The western canal has two rows of varied waterfront facades, raised stone quays,
|
||||
bridge openings, trees and benches. These replace the empty cleared block rows;
|
||||
they use the same world records in the GL and software renderers. The offline
|
||||
`pack_rooftop.py --district-only` option rebuilds layout and lighting without
|
||||
repacking unchanged sky, hand-animation or material assets.
|
||||
|
||||
The art direction takes atmospheric inspiration from the rooftop reference:
|
||||
https://www.loftprojectetagi.ru/visitors/krysha/ . It is an original game backdrop,
|
||||
not an exact survey or reproduction of that venue. Generated source images are
|
||||
|
|
@ -121,3 +133,6 @@ written under `build/hall-expansion/roof-*.png`. `--parity` verifies tested
|
|||
procedures against the full shipping object before publishing.
|
||||
The native harness also checks all three resolution profiles, automatic downgrade,
|
||||
F8 switching, and software roads/water with both present and missing city textures.
|
||||
It also captures GL_FASTEST fog, checks ground-cell bounds and water tessellation.
|
||||
These are compatibility checks on the test machine, not a substitute for confirming
|
||||
the result on the laptop's actual Intel driver.
|
||||
|
|
|
|||
BIN
poker.exe
BIN
poker.exe
Binary file not shown.
|
|
@ -1,10 +1,16 @@
|
|||
; Generated city block footprints and rooftop-relative heights.
|
||||
ROOF_BUILDING_COUNT equ 518
|
||||
ROOF_BUILDING_COUNT equ 578
|
||||
.data
|
||||
roofDistrict3D LABEL DWORD
|
||||
dd 1209139,2162688,2555904,3473408,-2949120,187,5
|
||||
dd 458752,1150157,2555904,3473408,-3145728,186,5
|
||||
dd 917504,1638400,-1966080,-1310720,-3538944,203,0
|
||||
dd 2818048,3771597,2359296,3473408,-2621440,187,5
|
||||
dd -1019085,-196608,2555904,3473408,-2883584,186,5
|
||||
dd 3276800,3997696,-1966080,-1310720,-3211264,203,0
|
||||
dd -1441792,-720896,-1966080,-1310720,-3407872,203,0
|
||||
dd 3830579,4521984,2359296,3473408,-3145728,188,5
|
||||
dd -1900544,-1078067,2555904,3473408,-3080192,193,5
|
||||
dd 393216,2228224,-3538944,-3080192,-2339635,192,1
|
||||
dd 5111808,5570560,262144,1179648,-3014656,192,2
|
||||
dd -1966080,-131072,-3538944,-3080192,-3126067,189,1
|
||||
|
|
@ -15,17 +21,25 @@ roofDistrict3D LABEL DWORD
|
|||
dd -4325376,-2490368,1179648,1638400,-2929459,188,1
|
||||
dd 5111808,6946816,-196608,262144,-3014656,192,0
|
||||
dd 5111808,6946816,1179648,1638400,-2994995,192,1
|
||||
dd -3247309,-2555904,2555904,3473408,-2818048,193,5
|
||||
dd -589824,-131072,-4456448,-3538944,-3126067,189,3
|
||||
dd 2752512,3211264,-4456448,-3538944,-2293760,187,2
|
||||
dd -4325376,-2490368,-1179648,-720896,-2536243,187,1
|
||||
dd 5111808,6946816,-1179648,-720896,-2929459,191,1
|
||||
dd 458752,1281229,5373952,6225920,-2686976,189,5
|
||||
dd 1340211,2162688,5373952,6225920,-2490368,190,5
|
||||
dd -888013,-196608,5373952,6225920,-3145728,189,5
|
||||
dd 393216,2228224,-4915200,-4456448,-2359296,192,0
|
||||
dd -4325376,-3866624,262144,1179648,-2949120,188,2
|
||||
dd 6488064,6946816,262144,1179648,-2994995,192,3
|
||||
dd 2818048,3574989,5373952,6291456,-2883584,190,5
|
||||
dd -4259840,-3306291,2555904,3473408,-3014656,192,5
|
||||
dd -1966080,-1507328,-4456448,-3538944,-3145728,189,2
|
||||
dd 4128768,4587520,-4456448,-3538944,-2274099,187,3
|
||||
dd -4325376,-2490368,-2555904,-2097152,-2555904,187,0
|
||||
dd 5111808,6946816,-2555904,-2097152,-2949120,191,0
|
||||
dd -1900544,-946995,5373952,6225920,-2621440,188,5
|
||||
dd 3633971,4521984,5373952,6291456,-2686976,191,5
|
||||
dd -1966080,-131072,-4915200,-4456448,-3145728,189,0
|
||||
dd 2752512,4587520,-4915200,-4456448,-2293760,187,0
|
||||
dd -4325376,-3866624,-2097152,-1179648,-2555904,187,2
|
||||
|
|
@ -34,11 +48,13 @@ roofDistrict3D LABEL DWORD
|
|||
dd 5111808,5570560,-4456448,-3538944,-2555904,190,2
|
||||
dd 393216,2228224,-5898240,-5439488,-2994995,191,1
|
||||
dd -5308416,-4849664,262144,1179648,-2667315,193,3
|
||||
dd -3509453,-2555904,5373952,6160384,-2949120,188,5
|
||||
dd -1966080,-131072,-5898240,-5439488,-3060531,188,1
|
||||
dd -5308416,-4849664,-2097152,-1179648,-2274099,192,3
|
||||
dd 7471104,7929856,-2097152,-1179648,-2863923,186,1
|
||||
dd -1966080,-131072,6881280,7340032,-3014656,186,0
|
||||
dd 2752512,4587520,6881280,7340032,-2883584,192,0
|
||||
dd -5868749,-4915200,2490368,3473408,-2621440,192,5
|
||||
dd 7864320,8912896,65536,1376256,-1441792,199,0
|
||||
dd 393216,851968,-6815744,-5898240,-3014656,191,2
|
||||
dd -6684672,-4849664,-196608,262144,-2686976,193,0
|
||||
|
|
@ -46,6 +62,7 @@ roofDistrict3D LABEL DWORD
|
|||
dd -4325376,-2490368,-4915200,-4456448,-2162688,186,0
|
||||
dd -4325376,-3866624,-4456448,-3538944,-2162688,186,2
|
||||
dd 5111808,6946816,-4915200,-4456448,-2555904,190,0
|
||||
dd -4259840,-3568435,5373952,6160384,-3145728,187,5
|
||||
dd -589824,-131072,-6815744,-5898240,-3060531,188,3
|
||||
dd -6684672,-4849664,-1179648,-720896,-2274099,192,1
|
||||
dd 7471104,9306112,-1179648,-720896,-2883584,186,0
|
||||
|
|
@ -57,6 +74,7 @@ roofDistrict3D LABEL DWORD
|
|||
dd -1966080,-1507328,7340032,8257536,-3014656,186,2
|
||||
dd 393216,2228224,-7274496,-6815744,-3014656,191,0
|
||||
dd -6684672,-6225920,262144,1179648,-2686976,193,2
|
||||
dd -6619136,-5927731,2490368,3473408,-2818048,191,5
|
||||
dd 5111808,6946816,-5898240,-5439488,-2143027,189,1
|
||||
dd 7471104,7929856,-4456448,-3538944,-2490368,193,2
|
||||
dd 5111808,6946816,6881280,7340032,-3145728,187,0
|
||||
|
|
@ -67,17 +85,20 @@ roofDistrict3D LABEL DWORD
|
|||
dd 5111808,5570560,-6815744,-5898240,-2162688,189,2
|
||||
dd 7471104,9306112,-3538944,-3080192,-2470707,193,1
|
||||
dd 5111808,5570560,7340032,8257536,-3145728,187,2
|
||||
dd -5737677,-4915200,5373952,6160384,-2883584,187,5
|
||||
dd -3932160,-2883584,-7012352,-5701632,-2097152,204,0
|
||||
dd -6291456,-5242880,-4653056,-3342336,-2293760,204,0
|
||||
dd 393216,2228224,-8257536,-7798784,-2601779,190,1
|
||||
dd 393216,2228224,9240576,9699328,-2293760,190,0
|
||||
dd 7471104,9306112,-4915200,-4456448,-2490368,193,0
|
||||
dd 6488064,6946816,7340032,8257536,-3126067,187,3
|
||||
dd -6619136,-5796659,5373952,6160384,-3080192,186,5
|
||||
dd 2752512,4587520,-8257536,-7798784,-2863923,193,1
|
||||
dd 2752512,4587520,9240576,9699328,-2228224,193,0
|
||||
dd 5111808,6946816,-7274496,-6815744,-2162688,189,0
|
||||
dd 8847360,9306112,-4456448,-3538944,-2470707,193,3
|
||||
dd 5111808,6946816,8257536,8716288,-3126067,187,1
|
||||
dd -8096973,-7274496,2490368,3473408,-2555904,191,5
|
||||
dd 393216,851968,-9175040,-8257536,-2621440,190,2
|
||||
dd -9043968,-7208960,-196608,262144,-2752512,190,0
|
||||
dd -9043968,-7208960,1179648,1638400,-2732851,190,1
|
||||
|
|
@ -99,6 +120,8 @@ roofDistrict3D LABEL DWORD
|
|||
dd 393216,2228224,-9633792,-9175040,-2621440,190,0
|
||||
dd -9043968,-8585216,262144,1179648,-2752512,190,2
|
||||
dd 393216,2228224,10616832,11075584,-2274099,190,1
|
||||
dd -8978432,-8155955,2490368,3473408,-2752512,190,5
|
||||
dd -7965901,-7274496,5373952,6160384,-2818048,186,5
|
||||
dd -9043968,-7208960,-3538944,-3080192,-2994995,188,1
|
||||
dd 9830400,11665408,-3538944,-3080192,-2732851,188,1
|
||||
dd -2949120,-2490368,9699328,10616832,-3126067,192,3
|
||||
|
|
@ -117,6 +140,7 @@ roofDistrict3D LABEL DWORD
|
|||
dd -9043968,-7208960,-4915200,-4456448,-3014656,188,0
|
||||
dd 9830400,11665408,-4915200,-4456448,-2752512,188,0
|
||||
dd -4325376,-3866624,9699328,10616832,-3145728,192,2
|
||||
dd -8978432,-8024883,5373952,6160384,-3014656,193,5
|
||||
dd 393216,2228224,-10616832,-10158080,-2208563,189,1
|
||||
dd -10027008,-9568256,262144,1179648,-2470707,187,3
|
||||
dd -4325376,-2490368,-9633792,-9175040,-2424832,192,0
|
||||
|
|
@ -140,6 +164,7 @@ roofDistrict3D LABEL DWORD
|
|||
dd 9830400,11665408,-5898240,-5439488,-2339635,187,1
|
||||
dd 9830400,11665408,6881280,7340032,-2293760,193,0
|
||||
dd 7471104,7929856,9699328,10616832,-2424832,191,2
|
||||
dd -10325197,-9633792,2490368,3473408,-2490368,190,5
|
||||
dd 786432,1835008,11862016,13172736,-1900544,204,0
|
||||
dd 393216,851968,-11534336,-10616832,-2228224,189,2
|
||||
dd -11403264,-9568256,-196608,262144,-2490368,187,0
|
||||
|
|
@ -170,12 +195,14 @@ roofDistrict3D LABEL DWORD
|
|||
dd 11206656,11665408,7340032,8257536,-2274099,193,3
|
||||
dd -6684672,-4849664,10616832,11075584,-2863923,189,1
|
||||
dd 7471104,9306112,10616832,11075584,-2405171,191,1
|
||||
dd -11337728,-10384179,2490368,3473408,-2686976,189,5
|
||||
dd 5111808,5570560,-11534336,-10616832,-2424832,187,2
|
||||
dd -11403264,-9568256,-3538944,-3080192,-3060531,193,1
|
||||
dd 12189696,14024704,-3538944,-3080192,-2667315,191,1
|
||||
dd 5111808,5570560,12058624,12976128,-2883584,189,2
|
||||
dd 393216,2228224,-11993088,-11534336,-2228224,189,0
|
||||
dd -11403264,-10944512,262144,1179648,-2490368,187,2
|
||||
dd -10587341,-9633792,5373952,6291456,-2621440,193,5
|
||||
dd -1966080,-131072,-11993088,-11534336,-2293760,186,0
|
||||
dd -11403264,-10944512,-2097152,-1179648,-3145728,186,2
|
||||
dd 13565952,14024704,-2097152,-1179648,-3060531,192,3
|
||||
|
|
@ -195,6 +222,7 @@ roofDistrict3D LABEL DWORD
|
|||
dd -10027008,-9568256,7340032,8257536,-2601779,190,3
|
||||
dd 12189696,12648448,7340032,8257536,-2228224,188,2
|
||||
dd -6684672,-4849664,11599872,12058624,-2228224,190,0
|
||||
dd -11337728,-10646323,5373952,6291456,-2818048,192,5
|
||||
dd 10223616,11272192,9502720,10813440,-1900544,204,0
|
||||
dd 5111808,6946816,-11993088,-11534336,-2424832,187,0
|
||||
dd -11403264,-10944512,-4456448,-3538944,-3080192,193,2
|
||||
|
|
@ -213,6 +241,7 @@ roofDistrict3D LABEL DWORD
|
|||
dd 9830400,11665408,-9633792,-9175040,-3014656,186,0
|
||||
dd -9043968,-7208960,10616832,11075584,-2929459,186,1
|
||||
dd -9043968,-8585216,9699328,10616832,-2949120,186,2
|
||||
dd -12946637,-11993088,2424832,3473408,-3014656,189,5
|
||||
dd -6684672,-6225920,-11534336,-10616832,-3145728,188,2
|
||||
dd 12189696,14024704,-7274496,-6815744,-2293760,190,0
|
||||
dd -11403264,-9568256,8257536,8716288,-2601779,190,1
|
||||
|
|
@ -229,13 +258,16 @@ roofDistrict3D LABEL DWORD
|
|||
dd 12189696,12648448,9699328,10616832,-2621440,189,2
|
||||
dd -9043968,-7208960,11599872,12058624,-2293760,187,0
|
||||
dd 9830400,11665408,11599872,12058624,-3080192,187,0
|
||||
dd -12815565,-11993088,5373952,6291456,-2555904,192,5
|
||||
dd 9830400,10289152,-11534336,-10616832,-2621440,193,2
|
||||
dd -11403264,-9568256,-8257536,-7798784,-2274099,191,1
|
||||
dd -11403264,-9568256,9240576,9699328,-3014656,191,0
|
||||
dd 12189696,14024704,9240576,9699328,-2621440,189,0
|
||||
dd -7667712,-7208960,12058624,12976128,-2274099,187,3
|
||||
dd 9830400,10289152,12058624,12976128,-3080192,187,2
|
||||
dd -13697024,-13005619,2424832,3473408,-2490368,188,5
|
||||
dd 12582912,13631488,-9371648,-8060928,-2293760,204,0
|
||||
dd -13697024,-12874547,5373952,6291456,-2752512,191,5
|
||||
dd -9043968,-8585216,-11534336,-10616832,-2883584,193,2
|
||||
dd -11403264,-9568256,-9633792,-9175040,-2293760,191,0
|
||||
dd -11403264,-9568256,10616832,11075584,-2994995,191,1
|
||||
|
|
@ -254,9 +286,12 @@ roofDistrict3D LABEL DWORD
|
|||
dd 12189696,12648448,-11534336,-10616832,-2883584,188,2
|
||||
dd 12189696,14024704,11599872,12058624,-3014656,190,0
|
||||
dd 12189696,12648448,12058624,12976128,-3014656,190,2
|
||||
dd -15174861,-14352384,2424832,3473408,-2949120,188,5
|
||||
dd -65536,2686976,-17629184,-14483456,-2359296,190,4
|
||||
dd -17170432,-13762560,-851968,2293760,-2686976,190,4
|
||||
dd -131072,2752512,15925248,19070976,-2293760,190,4
|
||||
dd -15043789,-14352384,5373952,6291456,-2490368,191,5
|
||||
dd -16056320,-15233843,2424832,3473408,-3145728,187,5
|
||||
dd -11403264,-9568256,-11993088,-11534336,-2949120,190,0
|
||||
dd -11403264,-10944512,-11534336,-10616832,-2949120,190,2
|
||||
dd 12189696,14024704,-11993088,-11534336,-2883584,188,0
|
||||
|
|
@ -268,6 +303,8 @@ roofDistrict3D LABEL DWORD
|
|||
dd 16384000,19791872,-5046272,-1900544,-2686976,189,4
|
||||
dd -3997696,-1769472,15925248,19070976,-2621440,189,4
|
||||
dd 4390912,6619136,15925248,19070976,-1966080,191,4
|
||||
dd -16056320,-15102771,5373952,6291456,-2686976,190,5
|
||||
dd -17468621,-16711680,2359296,3473408,-2752512,187,5
|
||||
dd -8454144,-5701632,-17629184,-14483456,-3014656,188,4
|
||||
dd 8323072,11075584,-17629184,-14483456,-1703936,192,4
|
||||
dd -16973824,-13959168,-9240576,-6094848,-2228224,188,4
|
||||
|
|
@ -276,6 +313,9 @@ roofDistrict3D LABEL DWORD
|
|||
dd 16777216,19398656,7536640,10682368,-2424832,192,4
|
||||
dd -8519680,-5636096,15925248,19070976,-2949120,188,4
|
||||
dd 8257536,11141120,15925248,19070976,-1638400,192,4
|
||||
dd -17665229,-16711680,5373952,6225920,-3014656,190,5
|
||||
dd -18415616,-17527603,2359296,3473408,-2949120,186,5
|
||||
dd -18415616,-17724211,5373952,6225920,-2490368,189,5
|
||||
dd 0,2621440,-21823488,-18677760,-3080192,189,4
|
||||
dd -12910592,-9633792,-17629184,-14483456,-1441792,187,4
|
||||
dd 12779520,15007744,-17629184,-14483456,-3276800,193,4
|
||||
|
|
@ -287,14 +327,18 @@ roofDistrict3D LABEL DWORD
|
|||
dd -12386304,-10158080,15925248,19070976,-3276800,187,4
|
||||
dd 12713984,15073280,15925248,19070976,-3211264,193,4
|
||||
dd -196608,2818048,20119552,23265280,-1572864,191,4
|
||||
dd -20024525,-19070976,2359296,3473408,-2686976,186,5
|
||||
dd -4456448,-1310720,-21823488,-18677760,-1507328,188,4
|
||||
dd 3866624,7143424,-21823488,-18677760,-2752512,190,4
|
||||
dd -20905984,-18415616,-5046272,-1900544,-1835008,188,4
|
||||
dd 20905984,23658496,-5046272,-1900544,-2359296,190,4
|
||||
dd -4063232,-1703936,20119552,23265280,-1900544,190,4
|
||||
dd 4259840,6750208,20119552,23265280,-3145728,192,4
|
||||
dd -19893453,-19070976,5373952,6225920,-2949120,189,5
|
||||
dd 20447232,21495808,-9175040,-7864320,1966080,200,2
|
||||
dd 20643840,21299200,-8978432,-8060928,2424832,200,2
|
||||
dd -20774912,-20083507,2359296,3473408,-2883584,193,5
|
||||
dd -20774912,-19952435,5373952,6225920,-3145728,188,5
|
||||
dd -8323072,-5832704,-21823488,-18677760,-1835008,187,4
|
||||
dd 8388608,11010048,-21823488,-18677760,-2424832,191,4
|
||||
dd -20840448,-18481152,-9240576,-6094848,-2555904,187,4
|
||||
|
|
@ -303,10 +347,13 @@ roofDistrict3D LABEL DWORD
|
|||
dd 20643840,23920640,7536640,10682368,-2097152,193,4
|
||||
dd -8585216,-5570560,20119552,23265280,-2228224,189,4
|
||||
dd 8126464,11272192,20119552,23265280,-2818048,193,4
|
||||
dd -22252749,-21430272,2359296,3473408,-2621440,193,5
|
||||
dd -22187213,-21430272,5373952,6160384,-2752512,188,5
|
||||
dd -16777216,-14155776,-17629184,-14483456,-1769472,186,4
|
||||
dd 16646144,19529728,-17629184,-14483456,-2949120,186,4
|
||||
dd -16842752,-14090240,15925248,19070976,-1703936,186,4
|
||||
dd 16580608,19595264,15925248,19070976,-2883584,186,4
|
||||
dd -23134208,-22311731,2359296,3473408,-2818048,192,5
|
||||
dd -12845056,-9699328,-21823488,-18677760,-2162688,186,4
|
||||
dd 12255232,15532032,-21823488,-18677760,-2097152,192,4
|
||||
dd -20774912,-18546688,-13434880,-10289152,-3276800,186,4
|
||||
|
|
@ -315,6 +362,7 @@ roofDistrict3D LABEL DWORD
|
|||
dd 21168128,23396352,11730944,14876672,-3276800,186,4
|
||||
dd -12451840,-10092544,20119552,23265280,-2555904,188,4
|
||||
dd 12648448,15138816,20119552,23265280,-2490368,186,4
|
||||
dd -23134208,-22246195,5373952,6160384,-2949120,187,5
|
||||
dd 22740992,23789568,-11468800,-10158080,4325376,201,2
|
||||
dd 22937600,23592960,-11272192,-10354688,4784128,201,2
|
||||
dd 131072,2490368,-26017792,-22872064,-1900544,188,4
|
||||
|
|
@ -326,10 +374,13 @@ roofDistrict3D LABEL DWORD
|
|||
dd 24772608,28180480,-5046272,-1900544,-2031616,191,4
|
||||
dd -4194304,-1572864,24313856,27459584,-3080192,191,4
|
||||
dd 4194304,6815744,24313856,27459584,-2424832,193,4
|
||||
dd -24546509,-23789568,2555904,3473408,-3145728,192,5
|
||||
dd 25034752,26083328,-8847360,-7536640,3145728,202,2
|
||||
dd 25231360,25886720,-8650752,-7733248,3604480,202,2
|
||||
dd -24743117,-23789568,5373952,6160384,-2686976,187,5
|
||||
dd 22085632,23134208,-15400960,-14090240,3604480,202,2
|
||||
dd 22282240,22937600,-15204352,-14286848,4063232,202,2
|
||||
dd -25493504,-24605491,2555904,3473408,-2621440,191,5
|
||||
dd -8257536,-5898240,-26017792,-22872064,-2555904,186,4
|
||||
dd 8454144,10944512,-26017792,-22872064,-3145728,190,4
|
||||
dd -25362432,-22347776,-9240576,-6094848,-2883584,186,4
|
||||
|
|
@ -346,6 +397,8 @@ roofDistrict3D LABEL DWORD
|
|||
dd 21102592,23461888,15925248,19070976,-2555904,187,4
|
||||
dd -16973824,-13959168,20119552,23265280,-2883584,187,4
|
||||
dd 16515072,19660800,20119552,23265280,-2162688,187,4
|
||||
dd -25493504,-24802099,5373952,6160384,-2883584,186,5
|
||||
dd -27102413,-26148864,2555904,3473408,-3080192,191,5
|
||||
dd -12779520,-9764864,-26017792,-22872064,-2883584,193,4
|
||||
dd 12320768,15466496,-26017792,-22872064,-2818048,191,4
|
||||
dd -25231360,-22478848,-13434880,-10289152,-1703936,193,4
|
||||
|
|
@ -354,6 +407,9 @@ roofDistrict3D LABEL DWORD
|
|||
dd 25034752,27918336,11730944,14876672,-2949120,187,4
|
||||
dd -12517376,-10027008,24313856,27459584,-1835008,189,4
|
||||
dd 12582912,15204352,24313856,27459584,-1769472,187,4
|
||||
dd -26971341,-26148864,5373952,6160384,-2621440,186,5
|
||||
dd -27852800,-27161395,2555904,3473408,-2555904,190,5
|
||||
dd -27852800,-27030323,5373952,6160384,-2818048,193,5
|
||||
dd 196608,2424832,-30212096,-27066368,-2621440,187,4
|
||||
dd -29360128,-26738688,-851968,2293760,-1769472,187,4
|
||||
dd -393216,3014656,28508160,31653888,-2031616,193,4
|
||||
|
|
@ -377,6 +433,7 @@ roofDistrict3D LABEL DWORD
|
|||
dd 24969216,27983872,15925248,19070976,-2228224,188,4
|
||||
dd -17039360,-13893632,24313856,27459584,-2162688,188,4
|
||||
dd 16449536,19726336,24313856,27459584,-1441792,188,4
|
||||
dd -29396173,-28508160,2490368,3473408,-2883584,190,5
|
||||
dd -8192000,-5963776,-30212096,-27066368,-3276800,193,4
|
||||
dd 8585216,10813440,-30212096,-27066368,-1966080,189,4
|
||||
dd -29229056,-26869760,-9240576,-6094848,-3211264,193,4
|
||||
|
|
@ -387,8 +444,11 @@ roofDistrict3D LABEL DWORD
|
|||
dd 8585216,10813440,28508160,31653888,-3276800,187,4
|
||||
dd 29622272,30670848,-10158080,-8847360,2752512,201,2
|
||||
dd 29818880,30474240,-9961472,-9043968,3211264,201,2
|
||||
dd -29265101,-28508160,5373952,6291456,-3145728,193,5
|
||||
dd 26017792,27066368,-17694720,-16384000,4718592,200,2
|
||||
dd 26214400,26869760,-17498112,-16580608,5177344,200,2
|
||||
dd -30212096,-29455155,2490368,3473408,-3080192,189,5
|
||||
dd -30212096,-29324083,5373952,6291456,-2621440,192,5
|
||||
dd -12648448,-9895936,-30212096,-27066368,-1703936,192,4
|
||||
dd 12451840,15335424,-30212096,-27066368,-1638400,190,4
|
||||
dd -29753344,-26345472,-13434880,-10289152,-2031616,192,4
|
||||
|
|
@ -760,7 +820,7 @@ roofCityLamps3D LABEL DWORD
|
|||
dd 41025536,5111808
|
||||
dd 42205184,1769472
|
||||
dd 42205184,5111808
|
||||
ROOF_LANDMARK_PARTS equ 26
|
||||
ROOF_LANDMARK_PARTS equ 180
|
||||
roofLandmarkParts3D LABEL DWORD
|
||||
dd 0,131072,2490368,6619136,8978432,-3932160,-1441792,193
|
||||
dd 0,524288,2097152,7012352,8585216,-1441792,-1048576,168
|
||||
|
|
@ -788,6 +848,160 @@ roofLandmarkParts3D LABEL DWORD
|
|||
dd 0,10354688,11141120,327680,1114112,-1703936,-524288,206
|
||||
dd 0,10485760,11010048,458752,983040,-524288,262144,191
|
||||
dd 2,10747904,720896,262144,235930,235930,2621440,166
|
||||
dd 0,-34078720,4587520,3604480,3932160,-4063232,-3915776,162
|
||||
dd 0,-34078720,-2464154,3909222,3932160,-3915776,-3856794,162
|
||||
dd 0,-34078720,-2464154,3906601,3934781,-3856794,-3846963,168
|
||||
dd 0,-1992294,2254438,3909222,3932160,-3915776,-3856794,162
|
||||
dd 0,-1992294,2254438,3906601,3934781,-3856794,-3846963,168
|
||||
dd 0,2726298,4587520,3909222,3932160,-3915776,-3856794,162
|
||||
dd 0,2726298,4587520,3906601,3934781,-3856794,-3846963,168
|
||||
dd 0,-34078720,4587520,4980736,5308416,-4063232,-3915776,162
|
||||
dd 0,-34078720,-2464154,4980736,5003674,-3915776,-3856794,162
|
||||
dd 0,-34078720,-2464154,4978115,5006295,-3856794,-3846963,168
|
||||
dd 0,-1992294,2254438,4980736,5003674,-3915776,-3856794,162
|
||||
dd 0,-1992294,2254438,4978115,5006295,-3856794,-3846963,168
|
||||
dd 0,2726298,4587520,4980736,5003674,-3915776,-3856794,162
|
||||
dd 0,2726298,4587520,4978115,5006295,-3856794,-3846963,168
|
||||
dd 0,-12066488,-12050760,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,-12058624,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,-11862016,-11730944,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,-11848909,-11837112,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-11757158,-11745362,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-12066488,-12050760,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,-12058624,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,-11862016,-11730944,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,-11848909,-11837112,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-11757158,-11745362,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-10886840,-10871112,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,-10878976,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,-10682368,-10551296,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,-10669261,-10657464,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-10577510,-10565714,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-10886840,-10871112,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,-10878976,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,-10682368,-10551296,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,-10669261,-10657464,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-10577510,-10565714,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-9707192,-9691464,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,-9699328,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,-9502720,-9371648,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,-9489613,-9477816,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-9397862,-9386066,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-9707192,-9691464,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,-9699328,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,-9502720,-9371648,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,-9489613,-9477816,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-9397862,-9386066,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-8527544,-8511816,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,-8519680,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,-8323072,-8192000,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,-8309965,-8298168,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-8218214,-8206418,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-8527544,-8511816,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,-8519680,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,-8323072,-8192000,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,-8309965,-8298168,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-8218214,-8206418,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-7347896,-7332168,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,-7340032,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,-7143424,-7012352,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,-7130317,-7118520,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-7038566,-7026770,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-7347896,-7332168,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,-7340032,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,-7143424,-7012352,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,-7130317,-7118520,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-7038566,-7026770,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-6168248,-6152520,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,-6160384,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,-5963776,-5832704,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,-5950669,-5938872,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-5858918,-5847122,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-6168248,-6152520,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,-6160384,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,-5963776,-5832704,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,-5950669,-5938872,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-5858918,-5847122,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-4988600,-4972872,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,-4980736,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,-4784128,-4653056,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,-4771021,-4759224,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-4679270,-4667474,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-4988600,-4972872,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,-4980736,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,-4784128,-4653056,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,-4771021,-4759224,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-4679270,-4667474,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-3808952,-3793224,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,-3801088,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,-3604480,-3473408,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,-3591373,-3579576,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-3499622,-3487826,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-3808952,-3793224,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,-3801088,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,-3604480,-3473408,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,-3591373,-3579576,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-3499622,-3487826,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-2629304,-2613576,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,-2621440,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,-2424832,-2293760,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,-2411725,-2399928,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-2319974,-2308178,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-2629304,-2613576,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,-2621440,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,-2424832,-2293760,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,-2411725,-2399928,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-2319974,-2308178,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-1449656,-1433928,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,-1441792,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,-1245184,-1114112,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,-1232077,-1220280,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-1140326,-1128530,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-1449656,-1433928,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,-1441792,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,-1245184,-1114112,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,-1232077,-1220280,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-1140326,-1128530,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,-270008,-254280,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,-262144,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,-65536,65536,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,-52429,-40632,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,39322,51118,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,-270008,-254280,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,-262144,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,-65536,65536,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,-52429,-40632,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,39322,51118,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,909640,925368,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,917504,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,1114112,1245184,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,1127219,1139016,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,1218970,1230766,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,909640,925368,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,917504,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,1114112,1245184,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,1127219,1139016,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,1218970,1230766,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,2089288,2105016,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,2097152,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,2293760,2424832,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,2306867,2318664,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,2398618,2410414,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,2089288,2105016,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,2097152,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,2293760,2424832,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,2306867,2318664,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,2398618,2410414,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,3268936,3284664,3708027,3723756,-3915776,-3722445,162
|
||||
dd 1,3276800,3715891,-3722445,98304,98304,137626,207
|
||||
dd 0,3473408,3604480,3699507,3732275,-3889562,-3876454,196
|
||||
dd 0,3486515,3498312,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,3578266,3590062,3702784,3728998,-3915776,-3889562,165
|
||||
dd 0,3268936,3284664,5189140,5204869,-3915776,-3722445,162
|
||||
dd 1,3276800,5197005,-3722445,98304,98304,137626,207
|
||||
dd 0,3473408,3604480,5180621,5213389,-3889562,-3876454,196
|
||||
dd 0,3486515,3498312,5183898,5210112,-3915776,-3889562,165
|
||||
dd 0,3578266,3590062,5183898,5210112,-3915776,-3889562,165
|
||||
roofFog3D db 0,1,1,2,3,4,4,5,6,6,7,8,8,9,10,10,11,11,12,13,13,14,15,15,16,16,17,18,18,19,19,20
|
||||
db 20,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36
|
||||
db 37,37,38,38,38,39,39,40,40,41,41,42,42,42,43,43,44,44,44,45,45,46,46,46,47,47,48,48,48,49,49,50
|
||||
|
|
|
|||
|
|
@ -173,6 +173,13 @@ roof_gl_list_triangle:
|
|||
mov inside,0
|
||||
@@:
|
||||
mov currentMat,ebx
|
||||
; Mode 2 compiles only tessellated water, with texture state set at playback.
|
||||
cmp emission,2
|
||||
jne roof_gl_list_material
|
||||
cmp ebx,ROOF_CITY_WATER
|
||||
jne roof_gl_list_skip
|
||||
jmp roof_gl_list_begin
|
||||
roof_gl_list_material:
|
||||
sub ebx,ROOF_DECK
|
||||
mov eax,roofHDDayTextures3D[ebx*4]
|
||||
cmp theme,0
|
||||
|
|
@ -512,7 +519,7 @@ roof_hd_emission_next:
|
|||
invoke UploadRoofGLSky3D,OFFSET roofNightArt3D,roofHDSkyTextures3D[4]
|
||||
test eax,eax
|
||||
jz roof_hd_init_failed
|
||||
invoke glGenLists,9
|
||||
invoke glGenLists,ROOF_GL_LIST_COUNT
|
||||
test eax,eax
|
||||
jz roof_hd_init_failed
|
||||
mov roofHDLists3D,eax
|
||||
|
|
@ -530,6 +537,9 @@ roof_hd_compile_model:
|
|||
inc model
|
||||
cmp model,3
|
||||
jb roof_hd_compile_model
|
||||
mov eax,roofHDLists3D
|
||||
add eax,ROOF_GL_WATER_LIST
|
||||
invoke BuildRoofGLList3D,OFFSET roofHDMeshScene3D,0,2,eax
|
||||
invoke FreeRoofMesh3D,OFFSET roofHDMeshScene3D
|
||||
invoke FreeRoofMesh3D,OFFSET roofHDMeshCar3D
|
||||
invoke FreeRoofMesh3D,OFFSET roofHDMeshBoat3D
|
||||
|
|
@ -816,16 +826,9 @@ DrawRoofGLWater3D PROC uses ebx esi
|
|||
@@:
|
||||
invoke glBindTexture,0DE1h,eax
|
||||
invoke glNormal3f,0,3F800000h,0
|
||||
invoke glBegin,7
|
||||
mov esi,OFFSET roofGLWaterVertices3D
|
||||
mov ebx,8
|
||||
roof_gl_water_vertex:
|
||||
invoke glTexCoord2f,[esi+12],[esi+16]
|
||||
invoke glVertex3f,[esi],[esi+4],[esi+8]
|
||||
add esi,20
|
||||
dec ebx
|
||||
jnz roof_gl_water_vertex
|
||||
invoke glEnd
|
||||
mov eax,roofHDLists3D
|
||||
add eax,ROOF_GL_WATER_LIST
|
||||
invoke glCallList,eax
|
||||
invoke glMatrixMode,1702h
|
||||
invoke glLoadIdentity
|
||||
invoke glMatrixMode,1700h
|
||||
|
|
@ -925,6 +928,7 @@ roof_hd_render_refresh:
|
|||
invoke glShadeModel,1D01h
|
||||
invoke glEnable,0B60h
|
||||
invoke glFogi,0B65h,801h
|
||||
invoke glHint,0C54h,roofGLFogHint3D
|
||||
invoke glFogf,0B62h,3B2A64C3h
|
||||
mov eax,OFFSET roofGLFogCurrent3D
|
||||
mov ebx,OFFSET roofGLAmbientDay3D
|
||||
|
|
@ -1041,7 +1045,7 @@ FreeRoofHD3D PROC uses ebx esi edi
|
|||
invoke wglMakeCurrent,roofHDDC3D,roofHDRC3D
|
||||
cmp roofHDLists3D,0
|
||||
je @F
|
||||
invoke glDeleteLists,roofHDLists3D,9
|
||||
invoke glDeleteLists,roofHDLists3D,ROOF_GL_LIST_COUNT
|
||||
mov roofHDLists3D,0
|
||||
@@:
|
||||
invoke glDeleteTextures,ROOF_GL_TEXTURES,OFFSET roofHDDayTextures3D
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ glColorMaterial PROTO STDCALL :DWORD,:DWORD
|
|||
glFogfv PROTO STDCALL :DWORD,:DWORD
|
||||
glFogf PROTO STDCALL :DWORD,:DWORD
|
||||
glFogi PROTO STDCALL :DWORD,:DWORD
|
||||
glHint PROTO STDCALL :DWORD,:DWORD
|
||||
glShadeModel PROTO STDCALL :DWORD
|
||||
glBlendFunc PROTO STDCALL :DWORD,:DWORD
|
||||
glDepthMask PROTO STDCALL :DWORD
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ include src_graphics\rooftop_gl_api.inc
|
|||
ROOF_HD_W equ 1280
|
||||
ROOF_HD_H equ 960
|
||||
ROOF_GL_TEXTURES equ 49
|
||||
ROOF_GL_LIST_COUNT equ 10
|
||||
ROOF_GL_WATER_LIST equ 9
|
||||
InitRoofHD3D PROTO
|
||||
FreeRoofHD3D PROTO
|
||||
RenderRoofHD3D PROTO
|
||||
|
|
@ -33,6 +35,7 @@ roofHDFBO3D dd 0
|
|||
roofHDColorTex3D dd 0
|
||||
roofHDDepth3D dd 0
|
||||
roofHDLists3D dd 0
|
||||
roofGLFogHint3D dd 1102h
|
||||
roofHDSkyTextures3D dd 2 dup(0)
|
||||
roofHDDayTextures3D dd ROOF_GL_TEXTURES dup(0)
|
||||
roofHDNightTextures3D dd ROOF_GL_TEXTURES dup(0)
|
||||
|
|
@ -117,14 +120,6 @@ roofGLFogBlack3D REAL4 0.0,0.0,0.0,1.0
|
|||
roofGLColorScale3D REAL4 255.0
|
||||
roofGLWaveDiv3D REAL4 100000.0
|
||||
roofGLHalf3D REAL4 0.5
|
||||
roofGLWaterVertices3D REAL4 -2000.0,-62.0,76.0,-166.666667,6.333333
|
||||
REAL4 2000.0,-62.0,76.0,166.666667,6.333333
|
||||
REAL4 2000.0,-62.0,60.0,166.666667,5.0
|
||||
REAL4 -2000.0,-62.0,60.0,-166.666667,5.0
|
||||
REAL4 70.0,-62.0,60.0,5.833333,5.0
|
||||
REAL4 2000.0,-62.0,60.0,166.666667,5.0
|
||||
REAL4 2000.0,-62.0,29.0,166.666667,2.416667
|
||||
REAL4 70.0,-62.0,29.0,5.833333,2.416667
|
||||
roofGLAmbientDay3D REAL4 0.43,0.43,0.48,1.0
|
||||
roofGLAmbientNight3D REAL4 0.20,0.23,0.32,1.0
|
||||
roofGLSunColorDay3D REAL4 0.75,0.57,0.39,1.0
|
||||
|
|
@ -167,6 +162,8 @@ roofQualityEcoText3D db 202,208,219,216,192,58,32,221,202,206,0
|
|||
roofQualityHighText3D db 202,208,219,216,192,58,32,196,197,210,192,203,200,0
|
||||
roofLogPath3D db "runtime\roof-renderer.txt",0
|
||||
roofLogHeader3D db "Native MASM rooftop renderer",13,10,0
|
||||
roofLogTerrain3D db "Terrain path: tiled ground and animated mesh water v2",13,10,0
|
||||
roofLogTriangles3D db "City mesh triangles: ",0
|
||||
roofLogVendor3D db "Vendor: ",0
|
||||
roofLogRenderer3D db "Renderer: ",0
|
||||
roofLogVersion3D db "OpenGL: ",0
|
||||
|
|
|
|||
|
|
@ -214,12 +214,18 @@ roof_log_write:
|
|||
WriteRoofLogString3D ENDP
|
||||
|
||||
WriteRoofRendererInfo3D PROC uses ebx esi
|
||||
local number[16]:BYTE
|
||||
invoke CreateDirectoryA,OFFSET runtime3D,0
|
||||
invoke CreateFileA,OFFSET roofLogPath3D,40000000h,1,0,2,80h,0
|
||||
cmp eax,-1
|
||||
je roof_log_done
|
||||
mov ebx,eax
|
||||
invoke WriteRoofLogString3D,ebx,OFFSET roofLogHeader3D
|
||||
invoke WriteRoofLogString3D,ebx,OFFSET roofLogTerrain3D
|
||||
invoke WriteRoofLogString3D,ebx,OFFSET roofLogTriangles3D
|
||||
invoke FormatNumber,roofHDMeshScene3D[4],ADDR number
|
||||
invoke WriteRoofLogString3D,ebx,ADDR number
|
||||
invoke WriteRoofLogString3D,ebx,OFFSET roofLogNL3D
|
||||
mov esi,0
|
||||
roof_log_gl_string:
|
||||
mov eax,OFFSET roofLogVendor3D
|
||||
|
|
|
|||
|
|
@ -183,6 +183,12 @@ def main():
|
|||
lit_windows += count
|
||||
night_city.append(frame)
|
||||
pack("city-night-v1.bin",night_city)
|
||||
count = pack_city_district()
|
||||
pack_roof_map()
|
||||
print(f"Packed roof: sunset/night, {lit_windows} distinct lit window apertures, 32 hand frames, {count} buildings.")
|
||||
|
||||
|
||||
def pack_city_district():
|
||||
# A connected street/courtyard district, not a ring of independent props.
|
||||
blocks = []
|
||||
lots,parks = [],[]
|
||||
|
|
@ -248,6 +254,19 @@ def main():
|
|||
y = 6-(i%3)*8 if side < 0 else 106+(i%4)*9
|
||||
h = 16+(i*7)%24
|
||||
blocks.append((x-11,x+11,y-10,y+10,-60+h,186+i%8,4))
|
||||
# Canal clearance removes water footprints, not entire empty city blocks.
|
||||
waterfront = []
|
||||
for gx in range(-13,2):
|
||||
x = 20+gx*36
|
||||
for bank in (0,1):
|
||||
key = (gx*19+bank*7)%31
|
||||
front,back = (53,39-key%4) if bank == 0 else (82,94+key%3)
|
||||
y0,y1 = sorted((front,back))
|
||||
mid = x-2+key%5
|
||||
for index,(x0,x1) in enumerate(((x-13,mid-.45),(mid+.45,x+13))):
|
||||
top = -60+12+(key+index*3)%11
|
||||
waterfront.append((x0,x1,y0,y1,top,186+(gx+bank*3+index)%8,5))
|
||||
blocks.extend(waterfront)
|
||||
blocks.sort(key=lambda b:(((b[0]+b[1])/2-20)**2+((b[2]+b[3])/2-11)**2))
|
||||
# Ground-only baked illumination follows the same real building footprints.
|
||||
elevation = np.zeros((512,512),dtype=np.float32)
|
||||
|
|
@ -328,6 +347,27 @@ def main():
|
|||
spire(0,(-19,-13,-64,-58,0,9),206)
|
||||
spire(0,(-18,-14,-63,-59,9,15),191)
|
||||
spire(2,(-16,-61,15,1.8,1.8,20),166)
|
||||
# The same modest quay geometry is consumed by both native renderers.
|
||||
quays = []
|
||||
def quay_piece(kind,coords,mat):
|
||||
piece = (kind,*[round(v*65536) for v in coords],mat)
|
||||
pieces.append(piece)
|
||||
quays.append((kind,*coords,mat))
|
||||
for y0,y1 in ((55,60),(76,81)):
|
||||
quay_piece(0,(-520,70,y0,y1,-62,-59.75),162)
|
||||
edge = 59.65 if y0 < 60 else 76
|
||||
for a,b in ((-520,-37.6),(-30.4,34.4),(41.6,70)):
|
||||
quay_piece(0,(a,b,edge,edge+.35,-59.75,-58.85),162)
|
||||
quay_piece(0,(a,b,edge-.04,edge+.39,-58.85,-58.7),168)
|
||||
for x in range(-184,68,18):
|
||||
if min(abs(x-b) for b in (-34,38)) < 6:
|
||||
continue
|
||||
for y in (56.7,79.3):
|
||||
quay_piece(0,(x-.12,x+.12,y-.12,y+.12,-59.75,-56.8),162)
|
||||
quay_piece(1,(x,y,-56.8,1.5,1.5,2.1),207)
|
||||
quay_piece(0,(x+3,x+5,y-.25,y+.25,-59.35,-59.15),196)
|
||||
for leg in (x+3.2,x+4.6):
|
||||
quay_piece(0,(leg,leg+.18,y-.2,y+.2,-59.75,-59.35),165)
|
||||
district += [f"ROOF_LANDMARK_PARTS equ {len(pieces)}","roofLandmarkParts3D LABEL DWORD"]
|
||||
district += [" dd "+",".join(map(str,piece)) for piece in pieces]
|
||||
fog = [min(190,round(d*180/(d+250))) for d in range(1024)]
|
||||
|
|
@ -340,8 +380,13 @@ def main():
|
|||
"casino":[10.9,29.1,.9,21.1],"street_spacing":36,"street_width":8,
|
||||
"street_level":-60,"canal":[-190,230,60,76],"bridges":[-34,38,110],
|
||||
"east_river":[70,1800,29,76],"river_bridges":[110,254,398],
|
||||
"waterfront_buildings":waterfront,"canal_quay_parts":quays,
|
||||
"lots":lots,"parks":parks,"lamps":lamps,"towers":towers,"buildings":blocks,
|
||||
"landmarks":{"dome":[20,119],"spire":[164,11]}},indent=2)+"\n",encoding="ascii")
|
||||
return len(blocks)
|
||||
|
||||
|
||||
def pack_roof_map():
|
||||
# Collision-only enclosure uses a valid legacy prepass material; the final
|
||||
# rooftop pass replaces its tall walls with low world-space railings.
|
||||
roof = [[102]*32 for _ in range(32)]
|
||||
|
|
@ -362,8 +407,13 @@ def main():
|
|||
"lighting":[512,512,3],"city_renderer":"world-space MASM geometry; sky only is raster",
|
||||
"source":"Built-in image generation; runtime geometry and interaction are assembly-only",
|
||||
"reference":"https://www.loftprojectetagi.ru/visitors/krysha/"},indent=2)+"\n",encoding="ascii")
|
||||
print(f"Packed roof: sunset/night, {lit_windows} distinct lit window apertures, 32 hand frames, {len(blocks)} buildings.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--district-only",action="store_true")
|
||||
if parser.parse_args().district_only:
|
||||
print(f"Packed city district: {pack_city_district()} building parts")
|
||||
else:
|
||||
main()
|
||||
|
|
|
|||
|
|
@ -48,9 +48,23 @@ class Mesh:
|
|||
self.horizontal(x0,x1,y0,y1,z1,roof or material)
|
||||
|
||||
def horizontal(self,x0,x1,y0,y1,z,material,uv=None):
|
||||
points = [(x0,y1,z),(x1,y1,z),(x1,y0,z),(x0,y0,z)]
|
||||
uv = uv or [(0,0),(1,0),(1,1),(0,1)]
|
||||
self.quad(material,list(reversed(points)),list(reversed(uv)))
|
||||
# Vertex-fog drivers must not interpolate a whole city from distant corners.
|
||||
def cuts(lo,hi):
|
||||
if hi-lo <= 64:
|
||||
return [lo,hi]
|
||||
candidates = list(range(-512,513,64))+[-96,-32,32,96,-1536,-1024,-768,768,1024,1536]
|
||||
return [lo,*sorted(v for v in candidates if lo < v < hi),hi]
|
||||
def texcoord(x,y):
|
||||
s,t = (x-x0)/(x1-x0),(y1-y)/(y1-y0)
|
||||
return tuple((1-t)*((1-s)*uv[0][i]+s*uv[1][i])+
|
||||
t*((1-s)*uv[3][i]+s*uv[2][i]) for i in range(2))
|
||||
xs,ys = cuts(x0,x1),cuts(y0,y1)
|
||||
for a,b in zip(xs,xs[1:]):
|
||||
for c,d in zip(ys,ys[1:]):
|
||||
points = [(a,d,z),(b,d,z),(b,c,z),(a,c,z)]
|
||||
coords = [texcoord(x,y) for x,y,_ in points]
|
||||
self.quad(material,list(reversed(points)),list(reversed(coords)))
|
||||
|
||||
def ellipsoid(self,x,y,z,rx,ry,rz,material,upper=False,rings=10,sides=24):
|
||||
end = math.pi/2 if upper else math.pi
|
||||
|
|
@ -231,7 +245,9 @@ def main():
|
|||
else:
|
||||
scene.box(*coords,mat)
|
||||
elif kind == 1:
|
||||
scene.ellipsoid(*coords,mat,upper=True,rings=14,sides=48)
|
||||
foliage = mat == 207
|
||||
scene.ellipsoid(*coords,mat,upper=not foliage,
|
||||
rings=4 if foliage else 14,sides=8 if foliage else 48)
|
||||
elif kind == 2:
|
||||
x,y,z,rx,ry,h = coords
|
||||
h *= .65
|
||||
|
|
|
|||
|
|
@ -185,6 +185,14 @@ def check_rooftop_navigation():
|
|||
assert city["street_level"] == -60
|
||||
assert len(city["parks"]) >= 6 and len(city["towers"]) >= 8
|
||||
assert len(city["buildings"]) > 400
|
||||
waterfront = city["waterfront_buildings"]
|
||||
assert len(waterfront) == 60
|
||||
assert all(b in city["buildings"] for b in waterfront)
|
||||
assert all(b[3] <= 54 or b[2] >= 82 for b in waterfront), "canal must stay open"
|
||||
for bank in (0,1):
|
||||
row = [b for b in waterfront if (b[3] < 60) == (bank == 0)]
|
||||
assert len(row) == 30 and min(b[0] for b in row) < -450 and max(b[1] for b in row) >= 68
|
||||
assert len(city["canal_quay_parts"]) > 100
|
||||
heights = {round(b[4]+60,1) for b in city["buildings"]}
|
||||
assert len(heights) >= 35 and min(heights) <= 6 and max(heights) >= 150
|
||||
assert len({(round(b[1]-b[0],1),round(b[3]-b[2],1)) for b in city["buildings"]}) >= 15
|
||||
|
|
@ -393,7 +401,26 @@ def main():
|
|||
right = Image.open(OUT/"roof-hd-look-right.bmp").convert("RGB")
|
||||
assert left.tobytes() != east.tobytes() != right.tobytes(), "leaning must allow actual head turns"
|
||||
mesh = json.loads((ROOT/"assets/sprites/rooftop/mesh-v1.json").read_text())
|
||||
assert mesh["triangles"]["scene"] < 36000, "never-visible static faces must be pruned"
|
||||
assert mesh["triangles"]["scene"] < 48000, "driver-safe ground must stay within the optimised mesh budget"
|
||||
assert mesh["removed_invisible_triangles"] > 18000
|
||||
packed_mesh = (ROOT/"assets/animations/rooftop/mesh-city-v1.bin").read_bytes()
|
||||
water_tiles = 0
|
||||
for at in range(12,len(packed_mesh),100):
|
||||
mat,*values = struct.unpack_from("<I24f",packed_mesh,at)
|
||||
if mat == 198:
|
||||
water_tiles += 1
|
||||
if mat not in (162,197,198,208,209):
|
||||
continue
|
||||
vertices = [values[i:i+8] for i in (0,8,16)]
|
||||
if not all(-62.1 <= v[1] <= -59.7 and v[4] > .99 for v in vertices):
|
||||
continue
|
||||
xs,zs = [v[0] for v in vertices],[v[2] for v in vertices]
|
||||
if max(xs) > -480 and min(xs) < 480 and max(zs) > -480 and min(zs) < 480:
|
||||
assert max(xs)-min(xs) <= 64.01 and max(zs)-min(zs) <= 64.01, "giant vertex-fog ground polygon"
|
||||
assert water_tiles >= 80, "animated water must reuse the tessellated scene mesh"
|
||||
fast_fog = Image.open(OUT/"roof-hd-vertex-fog.bmp").convert("RGB")
|
||||
nice_fog = Image.open(OUT/"roof-hd-canal-quays.bmp").convert("RGB")
|
||||
assert max(ImageStat.Stat(ImageChops.difference(fast_fog,nice_fog)).mean) < 20
|
||||
for profile in ("eco", "auto"):
|
||||
low = Image.open(OUT/f"roof-hd-{profile}.bmp").convert("RGB")
|
||||
difference = ImageStat.Stat(ImageChops.difference(low, east)).mean
|
||||
|
|
|
|||
|
|
@ -24,6 +24,10 @@ roofTestHDComposite db "build\hall-expansion\roof-hd-terrace.bmp",0
|
|||
roofTestHDMotion db "build\hall-expansion\roof-hd-traffic.bmp",0
|
||||
roofTestHDLeft db "build\hall-expansion\roof-hd-look-left.bmp",0
|
||||
roofTestHDRight db "build\hall-expansion\roof-hd-look-right.bmp",0
|
||||
roofTestHDQuay db "build\hall-expansion\roof-hd-canal-quays.bmp",0
|
||||
roofTestHDQuayNight db "build\hall-expansion\roof-hd-canal-night.bmp",0
|
||||
roofTestHDFastFog db "build\hall-expansion\roof-hd-vertex-fog.bmp",0
|
||||
roofTestHDWest db "build\hall-expansion\roof-hd-west.bmp",0
|
||||
roofTestHDEco db "build\hall-expansion\roof-hd-eco.bmp",0
|
||||
roofTestHDAuto db "build\hall-expansion\roof-hd-auto.bmp",0
|
||||
roofTestSoftware db "build\hall-expansion\roof-software-ground.bmp",0
|
||||
|
|
@ -172,8 +176,23 @@ roof_test_driver_write:
|
|||
mov roofNight3D,1
|
||||
invoke RoofTestHDSnapshot,OFFSET roofTestHDNight
|
||||
mov roofNight3D,0
|
||||
mov playerX,12*FP_1
|
||||
mov playerY,10*FP_1
|
||||
mov playerAngle,224
|
||||
invoke RoofTestHDSnapshot,OFFSET roofTestHDQuay
|
||||
mov roofGLFogHint3D,1101h
|
||||
mov roofHDRenderClock3D,-1
|
||||
invoke RoofTestHDSnapshot,OFFSET roofTestHDFastFog
|
||||
mov roofGLFogHint3D,1102h
|
||||
mov roofHDRenderClock3D,-1
|
||||
mov roofNight3D,1
|
||||
invoke RoofTestHDSnapshot,OFFSET roofTestHDQuayNight
|
||||
mov roofNight3D,0
|
||||
mov playerAngle,256
|
||||
invoke RoofTestHDSnapshot,OFFSET roofTestHDWest
|
||||
mov playerX,20*FP_1
|
||||
mov playerY,7*FP_1
|
||||
mov playerAngle,128
|
||||
invoke RoofTestHDSnapshot,OFFSET roofTestHDComposite
|
||||
invoke GetTickCount
|
||||
mov started,eax
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue