Thursday, February 13, 2014

IES Lighting

This work has been done in 25 days as a contractor in order to implement an IES parser, and reconstruct the direct lighting shadowing term.

IES files are LUT that encodes radiance flux measured physically by goniophotometers in all directions.

I choose to use shaders to reconstruct the signal from LUT but one could even reduce this shader to be a single texture fetch if the signal is correctly reconstructed and splatted into a texture ready for indexing.

anis refoufi ies lighting
2 IES Lights

Yet another fancy luminaire attenuation

anis refoufi spot ies lighting

Real time area light approximation (friendly for current gen gpus)

Design and implementation of a new lighting model in order to approximate area light source in real time.
This work has been done as a contractor for a 3d real time architectural previsualization.
The technical environment is DX11 and the task schedule is one month and a half for full integration into the existing shading framework and implementation of both diffuse and shadow contribution.

  • Principal diffuse component attenuation uses a form factor approximation dependent on solid angle is not really costly (only a few cross and dots).
  • Soft shadows are done using nvidia's PCSS algorithm enhanced to not exhibit imprecision problems inherent to filtering especially on edges in light space and cubemap faces border of the shadow map.This part can be problematic on low fillrate gpu's since it necessitate a high number of samples to look correct. I used DX11 sample compare functionnality (hardware shadows) to mitigate this.
anis refoufi area light twinmotion 3
complex material scene interaction

urban metro diffuse component only
in this scene the light area is covering a large area and would be a great input to any real time GI algorithm.
soft shadows


Friday, September 16, 2011

Precomputed Atmospheric Scattering Demo PostMortem

Video and demo of my implementation of the paper Precomputed Atmospheric Scattering.
This technique is very fast to evaluate on GPU's because it relies solely on precomputation and lookup tables.

DEMO CONTROLS :
Controls : mouse + Z/S/Q/D (on azerty keyboards) move the camera in freelook mode.
PAD 8 / PAD 2 , advance very fast ( permitt to take off and be in space ;-) )
W/X rotate sun direction.


Friday, August 26, 2011

Precomputed atmospheric scattering as described by Nishita93

Always in my research upon scattering of light rendering techniques, i implement this paper with some modifications, i use a volume texture instead of sampling planes and raycast against a sphere inside pixel shader to determine the lookup parameters.
I decided to compute on CPU for easy stream of calculation and eventual ports to PS3 :)

Actually only rayleigh scattering is displayed but it's a good start.

Sunday, December 12, 2010

Rendering grass and heightmap with GPU

Here i render grass and the video card seems to be happy ;-) , i'm using only vertex texture fetch and stream instancing , wich is DX9 level hardware.
This version is far from being optimized ( the particle system still update its physics ...) but the results are here
in an Xbox360 HD Res ( 720p AA 2x ) 140 Hz without optimization and crappy shaders , GPU is Radeon HD5770 , number of grass blades is 200k. It uses opaque rendering in order to avoid the sorting.
Billboards are generated on the fly with stream instancing, nothing revolutionnary but nature scene with lot of grass are eye candy.
The directionnal diffuse lighting is evaluated but the blades fine lighting is in the texture (wich is crappy because global illumination cannot be resolved for dynamic light source ) , one should add dynamic lighting with only gray shaded texture generation , and then evaluate scattering of light interreflection from other grass blades... i've some ideas for this.

Saturday, November 6, 2010

GPU Particle system demo


I give a try at GPU Particle , here is a screen from a DX10 implementation , (no feature of D3D10 used , so it can be easily adapted in D3D9).

The positions and velocity are computed by the GPU in render targets , moreover billboarding and tesselation is done by the vertex shader using multistream instancing for uv coordinates and vertex texture fetch for retrieving the positions from the rendertarget.
All rendertarget computations are double buffered.

The collision is simply an horizontal plane for the moment , and the force applied to particle is only gravity and a pseudo random spherical velocity distribution.

This is an interesting feature but the physics collision with arbitrary actors can be a pain to implement.
I will try to add interactivity by adapting the ideas from gpu gems 3 smoke demo wich voxelize arbitrary meshes in runtime in a volume texture to handle response of the velocity field.

Work in progress:

Performance :
GPU : Radeon HD5770
Shader are experimentals and far from optimized but heightmap collision with :

1 000 000 particles @ 90Hz

anis refoufi gpu particles
50 000 particles @ 893Hz

Friday, September 3, 2010

AnisFX definitely closed !

Hi,
my very old framework is now closed , and cleaned . It should be reliable.
You can download a demo from it in the page Experience Before TestDrive 2.