Important alert: (current site time 7/16/2013 3:15:49 AM EDT)
 

winzip icon

Direct3D -> 2D Part 2, Faking Light!!

Email
Submitted on: 3/2/2001 10:13:16 AM
By: Mark van Renswoude  
Level: Intermediate
User Rating: By 19 Users
Compatibility: VB 4.0 (32-bit), VB 5.0, VB 6.0
Views: 25769
author picture
 
     After figuring out how to rotate 2D sprites using Direct3D (check my other submissions), I wanted to do lighting. After reading some tutorials I gave up, they all used 3D, while I wanted to do 2D. There are other ways of faking light; making tiles in multiple shades at either design time or run time, but they're limited...

So here it is: faked light using Direct3D to simulate 2D! It looks great, runs fast (if you've got a 3D card, my P133 with Voodoo 3 could easily run it, although not on software rendering mode), and allows dynamic setting of light brightness and color.

So how does it work? Easy: it sets the color of a vertex (corner) to the brightness of the light at that specific place, after which Direct3D automatically adjusts the texture!


Some limitations though:

  • Light might seem choppy when moved (like in the example), but static lights will do much better... the smaller the tiles, the less you'll notice it, but I didn't want to fill the screen with 8x8 sized tiles...
  • This won't work with multiple lights or multiple colors of lights, you'll need to adjust some algorithms for that to work. I'm working on this problem, if I finish it, I'll post it here offcourse.


Enjoy, and don't forget to leave comments and vote!


(You're free to use this code in your own programs/games, but I would appreciate it if you gave me some credit, thanks!)

 
winzip iconDownload code

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. Afterdownloading it, you will need a program like Winzip to decompress it.Virus note:All files are scanned once-a-day by Planet Source Code for viruses, but new viruses come out every day, so no prevention program can catch 100% of them. For your own safety, please:
  1. Re-scan downloaded files using your personal virus checker before using it.
  2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.
  3. Scan the source code with Minnow's Project Scanner

If you don't have a virus scanner, you can get one at many places on the net including:McAfee.com

 
Terms of Agreement:   
By using this code, you agree to the following terms...   
  1. You may use this code in your own programs (and may compile it into a program and distribute it in compiled format for languages that allow it) freely and with no charge.
  2. You MAY NOT redistribute this code (for example to a web site) without written permission from the original author. Failure to do so is a violation of copyright laws.   
  3. You may link to this code from another website, but ONLY if it is not wrapped in a frame. 
  4. You will abide by any additional copyright restrictions which the author may have placed in the code or code's description.


Other 7 submission(s) by this author

 


Report Bad Submission
Use this form to tell us if this entry should be deleted (i.e contains no code, is a virus, etc.).
This submission should be removed because:

Your Vote

What do you think of this code (in the Intermediate category)?
(The code with your highest vote will win this month's coding contest!)
Excellent  Good  Average  Below Average  Poor (See voting log ...)
 

Other User Comments
3/2/2001 3:06:45 PMChris

If you do finish this, I hope I don't miss it...5/5
(If this comment was disrespectful, please report it.)

 
4/29/2001 7:35:50 AMFilip

Great code! 5 globes!
(If this comment was disrespectful, please report it.)

 
4/28/2002 2:28:08 PMShibaji Datta Gupta

Hi Mark
What a nice program!!!I am totally amazed...
I am Shibaji from India,a IT graduate(3rd year),and i am very interested in DirectX and OpenGL programming thru VB.
I have started DirectX...I will be very
benefited if you can help me learning
these subjects with some tutorial or coding...
Thanks
Shibaji
sdg_80@yahoo.co.in
(If this comment was disrespectful, please report it.)

 
9/14/2002 4:27:54 AMAndrew Thorpe

this is a pile of doo doo - what the hell does it do except not work?
(If this comment was disrespectful, please report it.)

 
1/16/2003 3:03:13 PM

This code works good, and I am using it in a rpg game I'm working on. Nice work! 5 globes!
(If this comment was disrespectful, please report it.)

 

Add Your Feedback
Your feedback will be posted below and an email sent to the author. Please remember that the author was kind enough to share this with you, so any criticisms must be stated politely, or they will be deleted. (For feedback not related to this particular code, please click here instead.)
 

To post feedback, first please login.