Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3D Glasses Fix: Question about adding Direct3D support (3rash/Thrash API) #115

Open
cyberluke opened this issue Mar 19, 2024 · 15 comments
Open

Comments

@cyberluke
Copy link

Hi, I am on Windows XP machine with Geforce 3 that has 3D glasses support. It works great using this 3rash patch that has both OpenGL and DirectX support: https://web.archive.org/web/20220131033002/https://verokster.blogspot.com/2019/11/need-for-speed-ii-second-edition-patch.html

But it does not fix Force Feedback, only your project seems to fix Force Feedback.

Would it be possible to use newer Thrash engine DLL same way Verokster patched NFS II game? I have a bit of software dev skills, I could try to do it myself if you point me to some direction.

The thing is that by using OpenGL 1 on Geforce 3 and enabling NVIDIA 3D in-game, it won't display stereo rendered camera, but only single camera. While Quake II using OpenGL works perfectly with stereo rendering. Perhaps it has something to do with Glide to OpenGL wrapper.

Sources:
https://web.archive.org/web/20210929214910/https://github.com/Verokster/3rash-module
https://archive.org/details/verokster

@zaps166
Copy link
Owner

zaps166 commented Mar 19, 2024

Does other games requires modifications to run with this?

@cyberluke
Copy link
Author

cyberluke commented Mar 19, 2024 via email

@zaps166
Copy link
Owner

zaps166 commented Mar 20, 2024

Ok, I see, but I never used it and I don't know how it's working. If it's stereo, the app has to display image with shifted view for the second eye, right?
Strange that's only this app has a problem. Have you checked both: GL1 and GL2 executables?

@sonik-br
Copy link
Contributor

@zaps166 The driver handles the stereo stuff. Internally it will render two "screens". I've used this before.
But looks like the driver will only do it's magic on direct3d games and not opengl.

@cyberluke
Copy link
Author

cyberluke commented Mar 21, 2024

GL2 is a no go because Geforce 3 is only OpenGL 1.5 compliant.

Yes, it renders two screens, but Quake II is well known OpenGL game and it works there as well. So I suspect it must be something with Glide wrapper in NFS II. It does not support OpenGL directly.

Therefore I would like to combine Verokster DirectX DLL and Sonik FFB DLL somehow.

I would like to help, I did this (Youtube video: https://www.youtube.com/watch?v=pIR5bgpmE7E ):

  • Logitech G940 flight joystick expose 3 devices (stick, pedals, throttle), but most games work only with 1 joystick device for binding
  • created virtual joystick driver using vJoy
  • forked FreePIE and fixed a lot of bugs including old bug in SlimDX, created better interface from C# to C++ for vJoy to fill it faster using C++ pointers
  • FreePIE script will take all 3 inputs from 3 logitech devices and map it to one vJoy joystick device + it will correctly forward FFB effects in ASYNC way without any delay
  • tested on Novalogic sims like Mig 29 Fulcrum from Steam on Windows 10

So I have some experience, but the problem is I don't have Verokster Trash engine fix source. It was on Github, but was removed. I tried to contact him. Do you have any clues how we could add DirectX DLL to your repo? They are present in Verokster binary you can still download, we could just bind to it, right?

@sonik-br
Copy link
Contributor

@cyberluke There's no "sonik ffb dll" XD
I did some simple changes to how the games handles ffb but it its mostly zaps code.
There's also Silent's Patch for NFSIISE and I believe it's open source. You can try to take a look into it.

Btw I believe that for 3d stereo to work the game must run at a stable 60fps. Did you force it via the config file?

@zaps166
Copy link
Owner

zaps166 commented Mar 21, 2024

the game must run at a stable 60fps.

This game is designed for fixed 64 FPS (IIRC), so if you run it on 60 Hz monitor with V-Sync it will still stutter a little. When I change it to 60 FPS, the entire game runs slower 😅 . Maybe for now best is to monitor with VRR which can go for 64 Hz 😄

@zaps166
Copy link
Owner

zaps166 commented Mar 21, 2024

GL2 is a no go because Geforce 3 is only OpenGL 1.5 compliant.

Yes, right 😄


I use basic functions like glBegin() / glEnd(), glOrtho(), glViewport(), glScissor(), glScalef() in OpenGL... Nothing special.

If you guys know how this is working and can test, maybe simple change in GL1 code could make it work?

@cyberluke
Copy link
Author

Good point: https://github.com/CookiePLMonster/SilentPatchNFS90s --- I could take your FFB Zaps and implement it there and then use it with Verok's patch.

I don't know about 60fps thing, but Verokster DirectX patch works. The thing is you need CRT monitor with 120 Hz (and I think interlaced mode), so it will draw left eye with 60 Hz and right eye for 60 Hz. Even some older games have 30 Hz cap, it does not blink or stutter.

Me is more DirectX guy, I don't have any experience with OpenGL.

@zaps166
Copy link
Owner

zaps166 commented Mar 24, 2024

I did some simple changes to how the games handles ffb but it its mostly zaps code.

Your info about the non-working POLAR on Windows was very helpful!


I have PC with Nvidia and Windows 7, is it possible to check if it's working there or I need Windows XP and older GPUs?

@sonik-br
Copy link
Contributor

I believe that you will need to use some very old nvidia driver.
Nvidia removed the "stereoscopic" stuff from newer drivers.

Check if your driver have this menu (this is the best picture I could find of it)

image

I'm not sure if it's the same tech that cyberluk is using.

@cyberluke
Copy link
Author

Yes, that is what I am using - Stereoscopic 3D. It works in Windows 98, Windows XP, Windows 7. Each driver menu looks different. For example in Windows XP, I think you have more options in the driver. Set up key shortcuts.

There are two versions of NVIDIA stereo 3d glasses:

  1. ASUS 3D and similar - you connect them via 3.5mm jack to graphic card (geforce 2, geforce 3, geforce 4)
  2. NVIDIA 3d vision - glasses made directly by nvidia - there are two models - older works on both CRT and LCD, newer works only on LCD.

Both use same driver. NVIDIA 3d vision is newer and should work in Win 7 and Win 10.

@sonik-br
Copy link
Contributor

@cyberluke have you seen this?
https://3dsurroundgaming.com/OGL3DVision.html

@zaps166
Copy link
Owner

zaps166 commented Apr 25, 2024

I noticed Nvidia 3d vision on 9600GT and Windows 10.

@ThreeDeeJay
Copy link

@cyberluke have you seen this? https://3dsurroundgaming.com/OGL3DVision.html

That does seem like the only way unless Direct3D is implemented, but I wasn't able to use that or even a couple old versions to trigger 3D

On a side note, any particular reason to use such an old hardware/software combo for 3D? There are viable modern alternatives
I was indeed able to get stereoscopic 3D by using the modern patch configured with Direct3D then dgVoodoo to convert it to Direct3D 11, which can be stereoized using a 3D Vision driver + patch installed via 3D Fix Manager
nvcplui_klev17OnJN
Newer drivers/GPUs should work with 3D Vision if you use Direct3D + d3d8to9, though the 2080 Ti is the last GPU to support 3D in Direct3D 11 natively (with that patch on the top right), which is useful for other games where D3D9 output of geo-11 doesn't work.

nfs2se001
I'm getting stable 60FPS per eye (120hz shutter display+emitter+glasses) though I wonder if switching to 72FPS/eye (144hz) would be better for the 64FPS lock. 🤔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants