The MASM Forum Archive 2004 to 2012

Specialised Projects => High Performance Ray Tracing => Topic started by: Mark_Larson on September 24, 2008, 02:19:58 PM

Title: what graphics API to use for raytracing, SDL
Post by: Mark_Larson on September 24, 2008, 02:19:58 PM
I highly recommend learning SDL.  It is MUCH easier to understand than directx or opengl.  I can get a fast framerate without using any hardware acceleration.  It'll work on slow computers better.  You can of course use the hardware acceleration, but since we are just writing to a framebuffer it isn't necessary.

http://www.libsdl.org/

simple introduction from the sdl webpage
http://www.libsdl.org/intro.en/toc.html

tutorials on gaming programming using SDL
http://lazyfoo.net/SDL_tutorials/index.php


the pluses of SDL
  runs on Windows and Linux, so you don't have to do anything special for either OS.
  supports 2d graphics - what we are doing
  supports 3d graphics
  supports directx under windows
  supporst opengl under windows and linux - this is what you would use if you wanted hardware acceleration under both OSes
  supports threads - this is really important since the threading models between Linux and Windows are really different.
  sound
  cd rom audio
  events

  it is completely simple to set up a graphics windows.  It only requires ONE call to the API, not the numerous calls it requires under Windows or Linux.  You don't have to do any kind of event handling procedure.  You simply call a SDL function ( like peekmsg), and it returns info about the mouse and keyboard.  That part is quite similar to the way it works in Windows.  You use a case  statement to break out the different times of events.

I had a problem getting SDL to run under 64-bit Linux, so that is what was holding up my tutorial.  I am good now, and will be posting something later today or tomorrow.
Title: Re: what graphics API to use for raytracing, SDL
Post by: Mark Jones on September 24, 2008, 08:53:11 PM
Quote from: Mark_Larson on September 24, 2008, 02:19:58 PM
[SDL] is completely simple to set up a graphics windows.  It only requires ONE call to the API...

Sounds nice. I like programming when it doesn't involve miles of red-tape. :U
Title: Re: what graphics API to use for raytracing, SDL
Post by: Mark_Larson on September 24, 2008, 09:23:08 PM
  MSVC doesn't do a good job of optimizing for the core 2 duo.  So I installed ICC, which will run under Windows and Linux.  Currently I am getting 330 FPS without doing ANY raytracing.  I am simply writing 0x00FFFFFF to the window as fast as I can.  This is in C.  With ASM I will be able to hit higher frame rates.  I am going to try and recompile SDL with ICC and see what kind of speed up I get.

  If ya'll have ICC ( I downloaded an evaluation version for free), I'd recommend also re-compiling SDL with ICC.  And optimize it for your processor.  It has full source code.  I forgot to mention that.

Title: Re: what graphics API to use for raytracing, SDL
Post by: publicminx on February 06, 2009, 08:21:40 PM
mark ...

how much fps do you get if you do the same with 64 bit? - possible to try?
Title: Re: what graphics API to use for raytracing, SDL
Post by: Mark_Larson on February 06, 2009, 09:47:48 PM
Quote from: publicminx on February 06, 2009, 08:21:40 PM
mark ...

how much fps do you get if you do the same with 64 bit? - possible to try?


64-bit gives a nice speed up.  I have 64-bit linux installed as a dual boot with Windows XP.

Title: Re: what graphics API to use for raytracing, SDL
Post by: ecube on March 13, 2009, 05:54:11 PM
wow nice find, Mark, i'll definitely give the library a go in the next few days. In an unrelated question are you planning on doing a 64bit optimization guide like your 32bit verison?
Title: Re: what graphics API to use for raytracing, SDL
Post by: Mark_Larson on March 14, 2009, 12:28:39 AM
 
Quote from: E^cube on March 13, 2009, 05:54:11 PM
wow nice find, Mark, i'll definitely give the library a go in the next few days. In an unrelated question are you planning on doing a 64bit optimization guide like your 32bit verison?

It wouild be a lot more complicated.    Optimizing the core 2 duo in 64-bit is more challenging, if you want to take full power of the architecture.  You can  stay with C and let the compiler to do it for you.
Title: Re: what graphics API to use for raytracing, SDL
Post by: ecube on March 14, 2009, 07:41:45 AM
Wow, recommending C to me over ASM for optimization on and ASM forum :\ hope the mighty hasn't fallen,as I still have faith in you!  :U
Title: Re: what graphics API to use for raytracing, SDL
Post by: Mark_Larson on March 15, 2009, 03:02:29 AM
Quote from: E^cube on March 14, 2009, 07:41:45 AM
Wow, recommending C to me over ASM for optimization on and ASM forum :\ hope the mighty hasn't fallen,as I still have faith in you!  :U

hehee,   you can do it in 64-bit asm, it is just a lot more complicated.  and you also get bigger speed ups from using asm over C.  I have 64-bit asm code already.  I had started the prject in C in 64-bit and converted it to 64-bit asm under Linux.  And then I switched to 32-bit C and 32-bit asm for the Windows Xp users.
Title: Re: what graphics API to use for raytracing, SDL
Post by: Mark_Larson on March 15, 2009, 03:05:15 AM
the P4 was the first intel processor in a long time that required lots of asm optimization to make it run fast.  I hated what Intel did with the P4.  Core 2 duo is a great design, but it is also complex.  It has lots of ways to speed it up.