Matthew Daniels
|
9ffce8b92a
|
Getting rid of most of the includes from Supermodel.h; each file now explicitly includes the header files it needs.
Making changes to a header file should no longer force the entire project to recompile.
|
2021-11-22 17:15:06 +00:00 |
|
Ian Curtis
|
e3374256ff
|
Just a few compile warnings
|
2021-02-20 22:19:16 +00:00 |
|
Ian Curtis
|
75f8ee61a3
|
fix missing polys with quad renderer
|
2020-09-14 20:01:52 +00:00 |
|
Ian Curtis
|
38c3ff61f9
|
Clip scroll fog to viewport, instead of filling entire screen. Fixes fog bug in Daytona credits.
|
2020-09-08 09:10:24 +00:00 |
|
Ian Curtis
|
aaa26f678c
|
Update scroll fog logic. Should fix the credits in virtua fighter and daytona that have fogging applied to the background layer and shouldn't.
|
2020-09-07 16:25:18 +00:00 |
|
Ian Curtis
|
ba917aca6d
|
Update glew version
|
2020-07-31 19:18:51 +00:00 |
|
Ian Curtis
|
6f6c98c671
|
The translator map seems to work with paletted colour values too, and the result is not clamped. Colours are passed to the GPU as unsigned bytes to multiplying by 16 will overflow, so we do the logic in the shader. If we passed floats we could skip the shader logic.
|
2020-05-11 09:05:46 +00:00 |
|
Ian Curtis
|
e2ad593e88
|
When the translator map is enabled the colour values seem to use 4 bits, 0-16. Why not 0-31 I don't know. Anyway virtua on is overflowing these values for some of the smoke effects. For us the numbers were wrapping around. Clamping is enough to fix this. (Thanks model123)
|
2020-05-07 19:34:22 +00:00 |
|
Ian Curtis
|
5ace960f14
|
tweak value so the map indicator still works at the start of spikeout
|
2020-01-04 18:15:30 +00:00 |
|
Ian Curtis
|
6b8a29105a
|
Sutherland-Hodgeman clipping only works for planar primitives. Scud is rendering non planar quads and this breaks our algorithm a little when using the quad renderer. Stretching the near plane a few % is enough to fix it.
|
2020-01-04 13:48:14 +00:00 |
|
Ian Curtis
|
d711afade1
|
Only need to clip against 4 planes for poly culling
|
2020-01-04 13:45:55 +00:00 |
|
Ian Curtis
|
605dad2c02
|
Fix the sky in harley in first person mode where pixels in the sky are culled when they shouldn't be with the quad renderer. Basically we were running out of precision in a rare corner case. Doing the maths with double precision and casting back to float was enough to fix the issue.
|
2019-12-27 21:36:46 +00:00 |
|
Ian Curtis
|
a5858e635d
|
To calculate the mipmap value the opengl needs to calculate the difference in the texture coordinates between adjacent pixels. If there are no adjacent pixels the hw may need to spawn invisible fragments outside of the visible polygon. Our algorithm was culling these out so the mipamp calculation failed for edge pixels. Anyway this fixes quad rendering looking broken with the latest nvidia drivers.
|
2019-12-10 11:40:39 +00:00 |
|
Ian Curtis
|
06688de5fc
|
Really should cull against 5 frustum planes.
|
2019-11-15 20:00:25 +00:00 |
|
Ian Curtis
|
06b43c45b3
|
Ocean hunter in the middle of the game is passing a few matrices with FLT_MAX inside them, which blows apart our near/far calculation. The hardware must have some method to sanitize the near/far for instance if you render something extremely close to the origin you will also blow apart any near/far calc.
|
2019-11-02 20:11:48 +00:00 |
|
Ian Curtis
|
714f6a123a
|
skip invalid culling nodes
|
2019-07-28 12:14:13 +00:00 |
|
Ian Curtis
|
17f4103123
|
A culling node must follow immediately after a viewport.
|
2019-07-26 16:39:58 +00:00 |
|
Ian Curtis
|
f634d19fdc
|
Fix shader. Why this worked on my nvidia card .. I'm not sure.
|
2019-01-24 19:11:26 +00:00 |
|
Ian Curtis
|
8094c2e2b7
|
Composite the alpha layers at the end of rendering. To do this we need to mask the alpha pixels with the opaque pixels from the next priority layer. Fixes some overlapping shadows in vf3tb that have different priority layers. I assume that was a game bug, but it works on the real h/w.
|
2019-01-21 14:30:42 +00:00 |
|
Ian Curtis
|
864bb36b5a
|
Technically backface culling should cull polys when the dot product = 0, since when it equals 0 the polys is perpendicular to the camera and thus invisible. When you complete sega rally2 (if you can get that far lol) the champagne is invisible. The reason is because all the face normals are 0. So when multiplied by the model matrix they are still 0 and get culled. Tweaking the condition to only cull polys when greater than 0 fixes this, and allows these 'bad' polys to render as they do on the model3.
|
2019-01-16 01:07:56 +00:00 |
|
Ian Curtis
|
6075352868
|
Optimise depth calculation for quad shader.
|
2018-11-27 20:43:27 +00:00 |
|
Ian Curtis
|
538a714086
|
Fade out microtextures with higher textures LODs. Fixes incorrectly applied microtextures in LA machineguns.
|
2018-10-23 00:16:23 +00:00 |
|
Ian Curtis
|
bf4d725970
|
Smooth texture repeat makes no sense for alpha/contour textures with pixel dilate. HW seems to treat them as non smooth anyway. Also implement some line of sight stuff, used by Scud. Really need to check the threading/synchronisation of the register reads but it basically works.
|
2018-10-19 20:59:46 +00:00 |
|
Ian Curtis
|
42eaa7f3d8
|
fix copy paste error :]
|
2018-10-14 10:05:24 +00:00 |
|
Ian Curtis
|
3eeec35e7c
|
Correctly emulate the real3d pro-1000 texture modes in our shader.
|
2018-10-13 13:29:45 +00:00 |
|
Ian Curtis
|
7bcc70a170
|
Update makefile
|
2018-10-01 17:42:45 +00:00 |
|
Ian Curtis
|
3dbfa73734
|
Both lemans24 and dirt devils are rendering some totally transparent objects as the first model in each viewport. The HW seems to skip these entirely, and including them breaks our near/far plane calculations leading to Z fighting.
|
2018-09-19 20:43:41 +00:00 |
|
Ian Curtis
|
e3255e45f3
|
Tweak the ratio for the near plane. Fixes missing text on the map indicator at the start of spikeout. The vertices are 0.003 units apart so a tonne of precision is required at the near plane to not depth test out.
|
2018-09-18 21:46:38 +00:00 |
|
Ian Curtis
|
c5b156d95d
|
remove debug code
|
2018-09-18 21:20:15 +00:00 |
|
Ian Curtis
|
5dab9910e2
|
avoid double matrix load
|
2018-09-16 08:43:13 +00:00 |
|
Ian Curtis
|
b5f9ad9651
|
Quad rendering engine. Set QuadRendering = 1 in the ini file to use, or -quad-rendering at the end of the command line to use.
|
2018-09-13 12:50:34 +00:00 |
|
Ian Curtis
|
e4f5f0bcaf
|
Sega bass fishing is starting some off the meshes with a shared vertex. Without having a previous vertex to share with, the values were just uninitialised and junk. The hardware itself seems to hold the value from the previous mesh, and sega bass fishing relies on this undefined behaviour to function correctly. Storing the cached vertices as member variables instead of locally to the function means it holds the values from the last mesh, and uses those values instead of random garbage.
|
2018-09-02 21:36:24 +00:00 |
|
Ian Curtis
|
c1c2dedcfa
|
remove dead variable
|
2018-08-09 21:57:51 +00:00 |
|
Ian Curtis
|
9f5a19a04a
|
Use correct PCI IDs (Harry Tuttle)
|
2018-07-09 08:06:06 +00:00 |
|
Ian Curtis
|
73ff32a10d
|
fix cast, and remove extra ; that had snuck into the shaders
|
2018-06-18 10:24:46 +00:00 |
|
Ian Curtis
|
f9be1259c0
|
Opaque polys definitely depth test with less than or equal. Virtua striker is drawing co-planar polys for the bar gfx
|
2018-06-17 11:30:01 +00:00 |
|
Ian Curtis
|
c7ffd0a808
|
Draw transparent polys to separate layers and composite at the end. This solves a tonne of transparency errors we had been battling with for a long time. The model3 is strange in the fact it only supports a max of two translucent overlapped polys. They are not blended into the frame normally. Doing this means the topmost translucent polys only are visible in the scene, the equivalent of doing a depth pass first, but without the added cost.
|
2018-06-16 21:31:29 +00:00 |
|
Ian Curtis
|
7497e3f1a6
|
forgot parentheses
|
2018-05-29 14:54:23 +00:00 |
|
Ian Curtis
|
f9f43ca66b
|
|
2018-05-28 12:55:13 +00:00 |
|
Ian Curtis
|
c1e0e3728b
|
optimise hash function and parse out transparency layer select bit
|
2018-05-28 11:59:48 +00:00 |
|
Ian Curtis
|
2af58f4352
|
select correct bit ..
|
2018-05-24 20:19:54 +00:00 |
|
Ian Curtis
|
8452d4c0ef
|
Parse out TranslucencyPatternSelect
|
2018-05-24 20:13:15 +00:00 |
|
Ian Curtis
|
4d275ba49e
|
Parse siblings after children. It's the only way to get Daytona water fall to look correct without h/w poly sorting.
|
2018-05-03 18:37:49 +00:00 |
|
Bart Trzynadlowski
|
3f9b1b76e5
|
Added a stretch mode (-stretch) and modified new renderer's viewport code (hopefully correctly) to handle aspect ratio correction and widening the way the legacy one does.
|
2018-05-03 03:46:44 +00:00 |
|
Ian Curtis
|
c6b86c0812
|
Render the opaque part of texture transparency in the first pass. Fixes numerous transparency related issues in lemans24 and some in ocean hunter. I don't really know if this is the 'correct' way of solving this because the real3d pro-1000 is a complete black box. There is still a lot we don't understand about how it handles transparency.
|
2018-05-02 20:10:02 +00:00 |
|
Ian Curtis
|
11a3cdbfd1
|
remove unnecessary copies
|
2018-04-24 13:51:53 +00:00 |
|
Ian Curtis
|
d21e71dced
|
work around for non working jtag code in star wars
|
2018-03-21 10:26:05 +00:00 |
|
Ian Curtis
|
b184ca3e1b
|
Clamping must be applied before the spotlight is applied on step 1.0 h/w.
|
2018-03-10 09:13:28 +00:00 |
|
Ian Curtis
|
8266eecabb
|
Parse out line of sight position. Only known to be used by scud.
|
2018-01-15 21:27:21 +00:00 |
|
Ian Curtis
|
99b5b9ba1b
|
make the logic a bit clearer
|
2018-01-15 14:40:59 +00:00 |
|