Members - Reputation: 288
Posted 20 November 2012 - 05:15 AM
1) Is it possible to somehow get fragments position in the shader and when rendering the ground get xyz position of player and make the shader draw a black circle shape?
2) Raycasting the ground from player feet downwards 2000.0f units and drawing a quad at that position. Should I raycast the entire mesh every frame like this or skip frames or what? Is this a good method to do it?
3) Any other easy method to do it?
Members - Reputation: 346
Posted 20 November 2012 - 03:10 PM
This should give you a simple circle with decreasing intensity blob below the player. You can also factor in player's distance from the floor so that the circle falls of faster.
Render all geometry except for player models. Disable depth completely and enable blending. Draw the quad (just as you would do before, parallel to the floor) with the same circle. Re-enable depth and disable blending. Draw the model.
Scrap it. It won't play nice with occluding geometry. Though the initial approach will continue to function.
Edited by max343, 20 November 2012 - 04:26 PM.
Members - Reputation: 841
Posted 21 November 2012 - 12:10 AM
Player position can be given with uniform.
The problem is that with this approach you are comparing each fragment with player. Depending on your scene complexity this may be complete overkill. Such shadow is basically spotlight with negative luminosity.
Drawing quad on ground under the feet of player may be faster solution, especially if you can reuse some other shader.
First technology demo of my game Shinya is out: http://lauris.kaplinski.com/shinya
Khayyam 3D - a freeware poser and scene builder application: http://khayyam.kaplinski.com/