Commit graph

281 commits

Author SHA1 Message Date
Ian Curtis d058a29ac8 stencil translucent non textured polys 2016-06-19 23:33:06 +00:00
Ian Curtis 85c4d85562 refactor 2016-06-19 21:43:09 +00:00
Ian Curtis c2b1db11f8 Cull geometry based on the culling distances in the nodes. Should give some sort of speedup on lower end pcs where the CPU is predominantly the bottle neck. 2016-06-16 20:05:29 +00:00
Ian Curtis d799c63b1a cache bound texture 2016-06-10 11:29:20 +00:00
Ian Curtis 48a79a8f14 cleaning 2016-06-10 10:18:47 +00:00
Ian Curtis 8440bc7f03 support negative exponent 2016-06-03 09:33:46 +00:00
Ian Curtis 5081ee99dc Add code to convert the 16bit float format used by the hardware back into float 754 format. 16bit floats are used for the culling radiuses in the nodes. 2016-06-03 00:01:34 +00:00
Ian Curtis 9bc1fbf0cb remove dead code 2016-06-02 21:26:50 +00:00
Ian Curtis ff8e9d6aad Check for overflow. Fixes some fade effects 2016-05-30 23:10:56 +00:00
Ian Curtis 36074d9fd5 Y texture offsets are just 5 bits. Texture coordinate wrap around happens in the same texture sheet, not into the next one. Fixes various texturing bugs in sega rally. 2016-05-30 13:25:00 +00:00
Bart Trzynadlowski 2ee0d9018e New engine: modf -> std::modf (fixes compilation on gcc) 2016-05-28 20:54:25 +00:00
Bart Trzynadlowski 5c1a240565 New engine: expanded color indices to 12 bits from 11. Added PolygonHeader::ColorIndex and SensorColorIndex methods. 2016-05-28 20:49:10 +00:00
Bart Trzynadlowski e4a5c341dd Updated polygon header descriptions 2016-05-28 20:33:10 +00:00
Ian Curtis ce03c13847 Optimise non smooth texture repeat to only effect texture boundaries, rather than poly boundaries. Fixes a few ugly artefacts 2016-05-28 13:21:35 +00:00
Ian Curtis 661f19be19 fix transparency values, values are from 0-32, not 0-16 where the top bit disables 2016-05-27 22:20:57 +00:00
Ian Curtis 2086b1c9af Stencil layered polys, fixes shadow z fighting in some of the games. Other games maybe using stipple alpha (yuck), not sure yet. 2016-05-27 19:30:40 +00:00
Ian Curtis 3f9936d664 don't clamp after spot light code, looks much closer to h/w 2016-05-26 09:06:09 +00:00
Ian Curtis 89c987fae1 basic spotlight code 2016-05-26 00:08:12 +00:00
Ian Curtis c5ce2b9679 fix alpha testing for texture format 7 2016-05-22 19:17:15 +00:00
Ian Curtis 65d6342947 remove dead code 2016-05-21 16:26:00 +00:00
Ian Curtis fd3eb49369 support 4 bit textures 2016-05-21 15:50:54 +00:00
Ian Curtis e108b56664 correctly mask pointers 2016-05-19 22:23:50 +00:00
Ian Curtis a79fd2786a optimise hash table access for better performance 2016-05-19 19:04:44 +00:00
Ian Curtis ff8d311dcc support colour table pointer 2016-05-18 23:06:41 +00:00
Ian Curtis 7e3c097a31 remove debug code 2016-05-16 17:26:53 +00:00
Ian Curtis 828fd8ebb4 Fog start is apparently the fog value at the viewport (0,0,0) I guess like an ambient value. Default value is negative 2016-05-16 17:10:04 +00:00
Ian Curtis 9e279a0c1f Non luminous polygons seem to be effected by the lightModifier also. API seems to have no restriction in this regard, neither does the SDK. The ocean hunter requires this for some of the 2d stuff. Light modifier values only seem to exist between 0-16, which is strange for 5 bits of precision. Possibly top bit disables the effect and lower 4 bits are the value. This clearly differs from the SDK, but without this the values come out clearly wrong. 2016-05-16 10:49:00 +00:00
Ian Curtis 62eafacfc3 adjust (hopefully correct) fog equation 2016-05-16 10:44:16 +00:00
Ian Curtis bc08276d60 preliminary specular 2016-05-15 16:24:49 +00:00
Ian Curtis c4b5b185c6 Disable light modifier on fog, seems not to work .. values don't make sense. Maybe the model3 doesn't use these. 2016-05-13 19:26:10 +00:00
Ian Curtis c8f8cd1655 remove dead code 2016-05-13 08:40:53 +00:00
Ian Curtis e295ad6868 double up polys for two sided polys, fixes some diffuse lighting problems 2016-05-13 08:39:48 +00:00
Bart Trzynadlowski ddf3d5213d FLT_MAX -> std::numeric_limits<float>::max() 2016-05-10 03:08:36 +00:00
Ian Curtis 34c81eabee update header documentation 2016-05-09 16:53:12 +00:00
Ian Curtis 43add90d2f Fix bad texture seems 2016-05-09 16:26:34 +00:00
Ian Curtis 69a44a5d5f add texture helper functions 2016-05-07 18:57:06 +00:00
Ian Curtis 242cddac2d remove pointless loop 2016-05-07 15:45:02 +00:00
Ian Curtis ded3168060 Split face colour from per vertex poly colour. Fixes colour bleeding between connected polys in harley. 2016-05-07 15:28:04 +00:00
Ian Curtis 05e1e4de37 update poly header class 2016-05-06 15:00:12 +00:00
Bart Trzynadlowski fee1cfb126 Fixed compilation on gcc (gotos cannot cross variable declarations) 2016-05-05 22:01:59 +00:00
Ian Curtis da4bab5f9b Flat shaded polys can't share vertex normals with adjacent connected polys. Fixes some bad lighting in Harley on pavements 2016-05-05 08:06:06 +00:00
Ian Curtis b2da849d90 support flat shading 2016-05-05 00:01:17 +00:00
Ian Curtis 3693a51cbb Make sure texture is bound to correct texture unit, stop flashing micro textures in daytona 2016-05-04 16:30:15 +00:00
Ian Curtis b0569007ef set correct microtexture wrap mode 2016-05-04 10:30:58 +00:00
Ian Curtis c545b9fd85 preliminary microtexture 2016-05-04 00:35:07 +00:00
Ian Curtis 396fba7d24 skip viewports marked as disabled, might stop parsing some bad data 2016-05-03 21:17:37 +00:00
Ian Curtis c459772f8e wrap invalid texture sizes, seems to fix bad textures in srally2 (skid marks) 2016-05-01 19:52:02 +00:00
Ian Curtis 7ec7906c0f Turn off lighting if fixed shading (or no normals) flag is present. Fixes some of the lighting weirdness in scud 2016-04-30 20:32:44 +00:00
Ian Curtis 23a5839d46 Daytona seems to use 3 bits for texture transparency, will figure it out later but for now this works 2016-04-30 09:02:38 +00:00
Ian Curtis 30ca1792bb Fix fixed shading maths 2016-04-30 08:58:13 +00:00
Ian Curtis c499e6640c fixed shading code 2016-04-29 23:03:46 +00:00
Ian Curtis 09e27e3082 color flag 2016-04-27 16:42:31 +00:00
Ian Curtis 8f6ab2fcf9 simplify 2016-04-27 08:13:22 +00:00
Ian Curtis 3e8439c09c fix model normals, add code for fixed shading, as of yet flag to turn it on is unknown 2016-04-26 09:06:48 +00:00
Bart Trzynadlowski 908d979cd7 Flattened out nested if-statements in new engine's fragment shader to improve compatibility with older GPUs (e.g., NVS 300) 2016-04-22 23:46:49 +00:00
Ian Curtis 58d187e59a parse viewports in normal order 2016-04-19 22:05:12 +00:00
Ian Curtis df9fefd064 walk siblings before children, fixes some of the transparency drawing issues in ocean hunter 2016-04-18 22:25:05 +00:00
Ian Curtis 057ee94210 simplify 2016-04-18 14:06:10 +00:00
Ian Curtis c4dc96ef71 simplify list code 2016-04-17 00:00:51 +00:00
Ian Curtis f52cb3c491 tweak frustum planes 2016-04-08 23:29:31 +00:00
Bart Trzynadlowski 22907b033f Fixes for non-Windows builds: Makefile updated and fixed header files in Vec.cpp 2016-04-05 04:30:52 +00:00
Ian Curtis 5f68544641 revert viewport code 2016-04-04 10:50:05 +00:00
Ian Curtis ecea4cad56 change tex format 4 2016-04-04 10:21:34 +00:00
Bart Trzynadlowski 1d4f5c871d Fixed Types.h include 2016-04-04 03:43:55 +00:00
Ian Curtis d155fbd6e4 rgb values were swapped for paletted colours 2016-04-03 23:21:50 +00:00
Ian Curtis 3bc2794b0a Use the correct texture enable bit 2016-04-03 16:10:40 +00:00
Ian Curtis 688af26846 Possible work around for slightly incorrect viewport positions in ECA and harley 2016-04-02 22:13:59 +00:00
Ian Curtis c7412828d4 Use proper texture wrapping mode for 2d. Stops garbage down the top and left sides. Should really use NPOT texture. 2016-04-02 12:23:46 +00:00
Ian Curtis 7e7847bc83 Allow asymmetric projection matrices. Fixes a bunch of missing effects and bad camera angles in harley. 2016-03-31 09:27:42 +00:00
Ian Curtis aee89390ba add LOD table data. Maybe we can get clipping planes out of these 2016-03-28 20:11:46 +00:00
Ian Curtis e79b241a49 properly mark dynamic meshes as such 2016-03-28 19:58:36 +00:00
Ian Curtis e1278f4451 allow 8 bit mono textures to be contour textures, fixes a bunch of missing transparency in harley la riders 2016-03-27 08:39:40 +00:00
Ian Curtis ffaed8ae32 clear the rom mesh buffer 2016-03-26 22:48:51 +00:00
Ian Curtis 4992e59673 Cache rom models, for better performance. 2016-03-26 22:44:26 +00:00
Ian Curtis 8488f22ac5 2016-03-24 13:26:28 +00:00
Ian Curtis 0327db246f WIP 2016-03-24 13:17:17 +00:00
Ian Curtis 23172c9aec fix for bad matrix with NaN 2016-03-23 01:05:02 +00:00
Ian Curtis f031e5d095 finish front/back face culling code based on matrix determinant. Optimised opengl to avoid redundant state changes. 2016-03-22 23:39:59 +00:00
Ian Curtis e7eb912eaa add maths functions 2016-03-22 13:47:28 +00:00
Ian Curtis 93f6b01e0b Update project to vs 2013. Clean compile warnings 2016-03-22 12:30:23 +00:00
Bart Trzynadlowski 34301e97e1 Adding new 3D engine by Ian Curtis. Old engine moved to Graphics/Legacy3D/. 2016-03-21 04:10:14 +00:00