Difference between revisions of "Ray casting"
Jump to navigation
Jump to search
m (libtcod) |
(→How do I implement it?: Advent project page is marked for deletion, link fixed) |
||
(4 intermediate revisions by 4 users not shown) | |||
Line 26: | Line 26: | ||
* [[Line of Sight - Tobias Downer]] | * [[Line of Sight - Tobias Downer]] | ||
* [[Simple and accurate LOS function for BlitzMax]] | * [[Simple and accurate LOS function for BlitzMax]] | ||
* [[eligloscode|Very simple line of sight pseudo-code.]] | |||
* [[Raycasting in python]] | |||
==What games use it?== | ==What games use it?== | ||
Line 33: | Line 35: | ||
==What libraries implement it?== | ==What libraries implement it?== | ||
[[libtcod]] | [[libtcod]] contains an enhanced version of perimeter raycasting with a post-processing step removing most artifacts and making it equivalent to shadowcasting. | ||
[[category:FOV]] | [[category:FOV]] |
Latest revision as of 11:50, 6 December 2015
What is Ray Casting?
Ray casting is a method for calculating Field of Vision where rays are traced from the center of a source square to a select number of destination squares. Squares are marked as visible as the rays pass through them, and walls will block the rays.
There are a few ways to decide where rays are to be cast:
- Every potential destination -- This method is very slow, but results in a crude approximation of Shadow casting.
- Every square along the perimeter of the area being checked for Field of Vision -- This is faster, but causes an increasing number of artifacts as the radius increases.
- A fixed number of rays as regular intervals -- Provides a tweakable knob that trades off between accuracy and speed.
Advantages
- Easy to implement
- Builds intuitively on Line of Sight algorithms.
Disadvantages
- Slow compared to other methods. Even when casting only a few rays, squares close to the source will be visited many times.
- Many artifacts, even in common situations
How do I implement it?
- Ray-Tracing Field-Of-View Demo
- A Bucket Of LOS
- LOS by Odd
- Line of Sight - Tobias Downer
- Simple and accurate LOS function for BlitzMax
- Very simple line of sight pseudo-code.
- Raycasting in python
What games use it?
What libraries implement it?
libtcod contains an enhanced version of perimeter raycasting with a post-processing step removing most artifacts and making it equivalent to shadowcasting.