![Page 1: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/1.jpg)
Lightning
SDK demo explained
![Page 2: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/2.jpg)
© NVIDIA Corporation 2007
Previous Work
Physical simulation using
Dielectric Breakdown Model*
Slow
Convolution with wide
filter
Structure from statistics
Raytracing / volume
traversal
Pregenerated animation
Not flexible
CPU based generation
2/25
*http://gamma.cs.unc.edu/LIGHTNING/
![Page 3: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/3.jpg)
© NVIDIA Corporation 2007
Algorithm
Generate lightning structure
Random fractal L – system in the GS
Multiple iterations of subdivisions to generate more
segments
Animation
Rendering
Constrained billboards
Post processing
Blurring for glow & atmospheric scattering
![Page 4: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/4.jpg)
© NVIDIA Corporation 2007
Generation of Lightning Structure (1)
Jitter Fork
Initial seed segment
Mix and
match
![Page 5: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/5.jpg)
© NVIDIA Corporation 2007
Generation of Lightning Structure (2)
Store line segment as single vertex and render
points
contains also “up” vector for orientation of deviation
GS emits 2 or 3 vertices, depending whether to
jitter or fork
controlled by current (global) subdivision level
Loop with StreamOut & BufferPingPong
5 to 6 subdivisions give good results
Between 64 and 729 segments per seed segment
2 * fork + 3 * jitter looks good
![Page 6: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/6.jpg)
© NVIDIA Corporation 2007
Generation of Lightning Structure (3)
Pseudo random numbers
DX9 style: store as textures
DX10 style: use integer / bit operations
Code from Numerical Recipes(http://www.library.cornell.edu/nr/cbookcpdf.html)
Ideally would have persistent seed value
Instead use primitive ID as seed value
Variation across primitives
Animation is easy, just add time to seed value
Jumpy appearance, no change in topology
Use base_value * e – decay * subdivision for control
![Page 7: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/7.jpg)
© NVIDIA Corporation 2007
Generation of Lightning Structure (4)
![Page 8: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/8.jpg)
© NVIDIA Corporation 2007
Generation of Lightning Structure (4)
![Page 9: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/9.jpg)
© NVIDIA Corporation 2007
Generation of Lightning Structure (4)
![Page 10: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/10.jpg)
© NVIDIA Corporation 2007
Generation of Lightning Structure (4)
![Page 11: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/11.jpg)
© NVIDIA Corporation 2007
Generation of Lightning Structure (4)
![Page 12: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/12.jpg)
© NVIDIA Corporation 2007
Rendering
Rendering into separate off-screen RT, but using
scene depth buffer, (with matching MSAA
settings)
Generate segment aligned and camera aligned
quad with gradient between 2 colors
Vary width based on segment “level”
Gaps between segments
What about segments nearly orthogonal to view
direction
![Page 13: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/13.jpg)
© NVIDIA Corporation 2007
Closing Gaps (2) ─ Starting point
![Page 14: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/14.jpg)
© NVIDIA Corporation 2007
Closing Gaps (2) ─ Starting point
![Page 15: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/15.jpg)
© NVIDIA Corporation 2007
Closing Gaps (1)
Adjacent vertices unknown during subdivision
Cannot use them to adjust / connect quads
Tried image space growing and shrinking using
dilation and erosion
Works for small resolutions / gaps
Leads to ugly artifacts
![Page 16: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/16.jpg)
© NVIDIA Corporation 2007
Erosion / Dilation
Dilation
http://www.dca.fee.unicamp.br/dipcourse/html-dip/c9/s4/front-
page.html
Erosion
![Page 17: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/17.jpg)
© NVIDIA Corporation 2007
Opening / Closing
Closing = dilation
followed by erosion
http://www.dca.fee.unicamp.br/dipcourse/html-dip/c9/s4/front-
page.html
Opening = erosion
followed by dilation
![Page 18: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/18.jpg)
© NVIDIA Corporation 2007
Closing Gaps (3) ─ Dilation
![Page 19: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/19.jpg)
© NVIDIA Corporation 2007
Closing Gaps (3) ─ Dilation
![Page 20: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/20.jpg)
© NVIDIA Corporation 2007
Closing Gaps (4) ─ Dilation + Erosion
![Page 21: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/21.jpg)
© NVIDIA Corporation 2007
Closing Gaps (4) ─ Dilation + Erosion
![Page 22: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/22.jpg)
© NVIDIA Corporation 2007
Closing Gaps (5) - Solution
Terminate each quad with a small square with a semicircular gradient
Quads of neighbors overlapLeads to overbright spots with additive blending
Max blending deals with that:fragment_color = max(source, destination)
If glow is used as a postprocessing step, additive blending works fine, i.e. it looks better
![Page 23: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/23.jpg)
© NVIDIA Corporation 2007
Closing Gaps (6) ─ Terminating Quads
![Page 24: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/24.jpg)
© NVIDIA Corporation 2007
Closing Gaps (6) ─ Terminating Quads
![Page 25: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/25.jpg)
© NVIDIA Corporation 2007
Closing Gaps (7) ─ Max Blending
![Page 26: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/26.jpg)
© NVIDIA Corporation 2007
Closing Gaps (7) ─ Max Blending
![Page 27: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/27.jpg)
© NVIDIA Corporation 2007
Post processing (1)
Down sample to ¼ of width and height
Blurring less dependent of screen resolution
Could have minimal size of downsampled buffer
Faster
Separable Gaussian blur, e.g. 9 pixels support
Falloff σ separate for RGB to fake atmospheric
scattering
Scale blurred version up and add to unblurred
Small glow
![Page 28: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/28.jpg)
© NVIDIA Corporation 2007
Post Processing (2)
![Page 29: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/29.jpg)
© NVIDIA Corporation 2007
Post Processing (2)
![Page 30: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/30.jpg)
© NVIDIA Corporation 2007
Results
![Page 31: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/31.jpg)
© NVIDIA Corporation 2007
Use cases (1)
Weather effects
Electric discharges
Beams between electrodes
Broken panels, computers
Combination with sparkles
42 kV fences
Nebula / clouds in space games
![Page 32: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/32.jpg)
© NVIDIA Corporation 2007
Use cases (2)
Force lightning
Radial lightning burst, restrict deviation to one plane
Chain lightning
Targets can be tracked by spell caster
Lighting missiles
Use 3D cross as seeding lines
Lightning elementals
Use GS to extract edges of low resolution mesh as seed
lines
![Page 33: Lightning SDK Demo - Nvidiadeveloper.download.nvidia.com/.../lightning_doc.pdf · Radial lightning burst, restrict deviation to one plane Chain lightning Targets can be tracked by](https://reader031.vdocuments.site/reader031/viewer/2022022423/5a9f56a17f8b9a76178caeeb/html5/thumbnails/33.jpg)
© NVIDIA Corporation 2007
Extensions
Apply HDR
Render bright single pixel lines and let HDR resolve deal
with glow
Wide glow
Render dim and very wide bolts following coarse
structure (e.g. 2 subdivision levels)
Add lighting to lightning
Use segment centers of coarse subdivision as point
light sources