These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

Macintosh

 
  • Topic is locked indefinitely.
Previous page12
 

DirectX to OpenGL

Author
Vincent Athena
Photosynth
#21 - 2012-08-02 13:46:51 UTC
There is also the second idea I proposed: add Pre-translated calls to eve. That is;

If ( UseOpenGL = true ) then
OpenGL call
else
DirectX call

where the OpenGL call is exactly the call Cider would have made if it was asked to do the translation. My guess is if even 5% of the graphics calls made by the client included "pre-translated" calls, there would be a marked improvement in fps, assuming the most heavily used calls were translated.

To do this you may not need to have that good an understanding of OpenGL, after all you are using Cider to do the translation then plagiarizing the result and sticking it in the client. Also if you can get away with just doing 5%, the programmer time would be small, making this a viable option despite CCP's manpower restrictions.

Also, there would not be two code branches to maintain. Just one which included code to use the right calls with each computer type.

What does Parallels and VM-ware do?

Know a Frozen fan? Check this out

Frozen fanfiction

Dersen Lowery
The Scope
#22 - 2012-08-03 00:37:15 UTC  |  Edited by: Dersen Lowery
Vincent Athena wrote:
There is also the second idea I proposed: add Pre-translated calls to eve. That is;

If ( UseOpenGL = true ) then
OpenGL call
else
DirectX call

where the OpenGL call is exactly the call Cider would have made if it was asked to do the translation. My guess is if even 5% of the graphics calls made by the client included "pre-translated" calls, there would be a marked improvement in fps, assuming the most heavily used calls were translated.


This is a lot of what companies like Westlake Interactive do, for tens of thousands of dollars. The problem is that DirectX and OpenGL are very similar, but not identical, and so it's not always a matter of conditionally calling DXDrawThingy() instead of OGLDrawThingy(). Furthermore, since OpenGL is a multi-company committee-authored standard, rather than a single company's fiat API, it tends to be a generation or so behind. So DX11NewShinyFeature() might have to be replaced by dozens or hundreds of lines of code to get the equivalent in OpenGL.

Vincent Athena wrote:
To do this you may not need to have that good an understanding of OpenGL, after all you are using Cider to do the translation then plagiarizing the result and sticking it in the client. Also if you can get away with just doing 5%, the programmer time would be small, making this a viable option despite CCP's manpower restrictions.


I don't know what the license implications would be if CCP took a bunch of open-sourced code and checked it into their client code tree. Even if they did that, they'd still have to port the rest of the client over; no more pretending that there's a C: drive.

Vincent Athena wrote:
What does Parallels and VM-ware do?


They sit between OS X and Windows, and make Windows think it's running on bare metal when it isn't (what Cider does with EVE, basically, but one level lower). I'm not 100% sure of the details of how they do that, because virtual machine technology has been improving by leaps and bounds, and my information is hopelessly stale.

Proud founder and member of the Belligerent Desirables.

I voted in CSM X!

Adrenalinemax
Lap Dancers
Brothers of Tangra
#23 - 2012-08-03 12:26:57 UTC
Vincent Athena wrote:
There is also the second idea I proposed: add Pre-translated calls to eve. That is;

If ( UseOpenGL = true ) then
OpenGL call
else
DirectX call

where the OpenGL call is exactly the call Cider would have made if it was asked to do the translation. My guess is if even 5% of the graphics calls made by the client included "pre-translated" calls, there would be a marked improvement in fps, assuming the most heavily used calls were translated.

To do this you may not need to have that good an understanding of OpenGL, after all you are using Cider to do the translation then plagiarizing the result and sticking it in the client. Also if you can get away with just doing 5%, the programmer time would be small, making this a viable option despite CCP's manpower restrictions.

Also, there would not be two code branches to maintain. Just one which included code to use the right calls with each computer type.

What does Parallels and VM-ware do?


Dude, you have the right idea and I applaud your thinking, but if it were as easy as you make it sound, CCP would be doing it.

The problem isn't the 85% that translates well, it is the 15% that doesn't translate or that DirectX uses a certain shader or property that OpenGL doesn't or is slightly different, for all that stuff you have to rewrite around it. That would give you 2 branches.

It is trying to translate using google translate, some things work fine, then you plug in some stuff and it just doesn't make much sense out of its native tongue.
Previous page12