In each release of our SDK you will find hundreds of code samples, effects, whitepapers, and more to help you take advantage of the latest technology from NVIDIA. Check out our SDK Home Page to download the complete SDK, or browse through individual code samples below. You can also click on the video links for a quick preview, or the thumbnail images for a gallery of larger images.
This code is released free of charge for use in derivative works, whether academic, commercial, or personal. (Full License)
|
Percentage-Closer Soft Shadows 
This technique generates soft shadows with penumbrae that harden on contact, giving useful and realistic visual cues. Based on shadow mapping and percentage-closer filtering, percentage-closer soft shadows (PCSS) generate high-quality soft shadows with just a single shadow map, without any pre-processing, post-processing, or other modification to the host application. The only required change is to replace the typical shadow mapping pixel shader with a PCSS shader. This effect requires FX Composer 1.8 or higher. |
|
 |
 |
Shadow
Whitepaper
Video
Download |
|
|
gooch_shadow 
gooch_shadow Project |
|
 |
 |
Whitepaper
Download |
|
|
dilation 
dilation Project |
|
 |
 |
Download |
|
|
softStencilShadow 
softStencilShadow Project |
|
 |
 |
Whitepaper
Download |
|
|
stencilShadow 
stencilShadow implements vertex-shader shadow-volume extrusion and shows how to set up simple stencil shadowing in FX Composer |
|
 |
 |
Whitepaper
Download |
|
|
goochSlicer 
goochSlicer Project |
|
 |
 |
Download |
|
|
psych_bg 
psych_bg Project |
|
 |
 |
Download |
|
|
bleach_bypass 
bleach_bypass Project |
|
 |
 |
Download |
|
|
cmykBloom 
cmykBloom Project |
|
 |
 |
Download |
|
|
drainBamage 
drainBamage Project |
|
 |
 |
Download |
|
|
duskHolga 
duskHolga Project |
|
 |
 |
Download |
|
|
lineDraw 
lineDraw Project |
|
 |
 |
Download |
|
|
optical_distort1 
optical_distort1 Project |
|
 |
 |
Download |
|
|
titleOverlay 
titleOverlay Project |
|
 |
 |
Download |
|
|
shadowPoint 
point-light shadowing |
|
 |
 |
Shadow
Whitepaper
Download |
|
|
BRDFpaint 
paint_brdf lets an artist work directly on BRDF
lookup tables using a brush -- and while seeing the live results of
the newly-created BRDF on any model, while they design it. Use the
pulldown on/off flags to determine which part of the BRDF to paint,
and then watch the results on-screen and in the textures panel.
Just save the textures as DDS files for final use. |
|
 |
 |
BRDF
Whitepaper
Download |
|
|
anaglyphic_stereo 
Anaglyphic stereo view of a tree model -- use red/blue 3D glasses |
|
 |
 |
Image Postprocessing
Download |
|
|
scroll 
Side-scroll animation |
|
 |
 |
Image Postprocessing
Download |
|
|
badPrinting 
Any image (including your 3D scene), altered to appear as if it was badly printed in CMYK out-of-register and twisted offset plates |
|
 |
 |
Image Postprocessing
Download |
|
|
uvDetective 
Shows uvDetective on a very simple model. Try it on any model of your own. UVDetective is a debugging/development shader that displays multiple useful facts about the UV coordinates on a model, and importantly shows the model's UV derivatives -- that is, how much stretching the UV's have in any part of the model. It also can display different exture MIP levels as varying colors. Finally and importantly, it has "TexRes" modes (techniques) that determine best texture resolutions based on a user-specified choice. For example, if the user specifies "256" then the display will show black where that resolution would be optimal, based on the current model and display size. Areas where a higher resolution could be used will be blue, while areas that could accept a lower resolution will be yellow |
|
 |
 |
Debug
Video
Download |
|
|
Grisaille (.fx shader) 
A plastic-like shader with "flatness" by scaling the surface normals
relative to the eye position, the appearance of an object can be flattened, much like
a low-relief carving in stone. Untextured, the flat gray appearance recalls "grisaille"
drawing and sculptural detailing. |
|
 |
 |
BRDF
Download |
|
|
metalReflShip 
metalReflShip shows the classic "bigship" model in a reflective environment |
|
 |
 |
Download |
|
|
bumpGloss 
bumpGloss shows a typical bumpy glossy material |
|
 |
 |
Download |
|
|
lambSkinDusk 
lambSkinDusk shows a cheap, fast way to emulate subsurface light scattering effects. The overall image is further enhanced by a sepia-tone pass |
|
 |
 |
Download |
|
|
durerDusk 
durerDusk shows a non-photo-real shading effect, designed to emulate a style of cross-hatched two-layer pen drawing |
|
 |
 |
Download |
|
|
duskWood 
The "duskWood" FXComposer sample shows Dusk's head shaded by a classic "wood" procedure, then the image further processed by an animated "old TV" image shader |
|
 |
 |
Download |
|
|
glassUFO 
glassUFO shows a reflective and refractive model. the background is generated by shader that can look at cube maps in arbitrary directions |
|
 |
 |
Download |
|
|
paintBrush 
paint_brush provides simple soft-edged painting
in FX Composer. Just draw with the mouse! FX Composer
has only simple mouse handling, but using time dynamics
and GPU-based texturing, many paint-program effects
are easily implemented. |
|
 |
 |
Whitepaper
Download |
|
|
paintLiquid 
paint_liquid is a tool similar to Photoshop's
"liquify" command. Read any texture from disk, and then
"paint" over it with the mouse the underlying image
can be freely distorted and warped in real time. This
shader works best with GPUs that can support 16-bit floating
point render targets, but will function on some older GPUs
also the distortion effect comes from painting an
unseen extra texture, which is then used to perform a
"dependant texture read" on the main input image. |
|
 |
 |
Image Postprocessing
Whitepaper
Video
Download |
|
|
MrWiggleDot 
The "MrWiggleDot" FXComposer sample combines Vertex Animation and a "halftone" imaging shader |
|
 |
 |
Download |
|
|
blendLayers 
The "blendLayers' FXComposer sample shows typical material effects, plus imaging "blend modes" (much like those found in programs like Adobe Photoshop™), encapsulated as pixel shaders |
|
 |
 |
Download |
|
|
glowTrailFP 
glowTrailFP two simple models with image process sweetening. Be sure to hit the "play" button.
These objects leave persistent but fading images behind as the scene moves.
The uses persistent render-to-texture
for animated effect. Each frame is rendered to a texture,
blurred and saved from
frame-to-frame. Each frame, the previous blur is faded slightly
before being added to the new scene. |
|
 |
 |
Image Postprocessing
Whitepaper
Video
Download |
|
|
vbombEdge 
vbombEdge shows a combination of vertex animation and high-performace image processing effects |
|
 |
 |
Download |
|
|
fpShadow 
fpShadow displays a simple object with a floating-point texture used for shadowing. The HLSL RenderPort functionality is used to assign appropriate transforms |
|
 |
 |
Whitepaper
Download |
|
|
mandelbrotPS3 
mandelbrotPS3 is a numerically-demanding example of pixel shader dynamic branching. Change the # of iterations at run time for varying precision effects |
|
 |
 |
Download |
|
|
raytrace 
The "raytrace" FXComposer sample is a classic spheres-and-plannes raytracer, running entirely in real time in the pixel shader |
|
 |
 |
Download |
|
|
tonemap 
tonemap shows high-dynamic-range imaging effects by permitting the user to control the exposure and look of a "deep pixel" image |
|
 |
 |
Image Postprocessing
Video
Download |
|
|
spinFX 
spinFX shows accumulation-buffer motion blur.
By default a SINGLE motion-blurred frame is drawn.
Uncomment the USE_TIMER macro and recompile to enable animation.
Accumulation buffer effects are created by rendering the same object
repeatedly, and accumulating the resultant pixels into a deep
(FP16) "accumulation buffer." This is therefore a render-to-texture
effect. For each subsequent re-rendering, the objects and/or camera
are moved or changed slightly. Once the accumulation passes are
complete, the resultant floating-point pixels are re-averaged into
a viewable and nicely-blurred picture. Controls in the shader
determine the balance between render speed (a small number of samples)
and blur quality (a large number of samples). |
|
 |
 |
Image Postprocessing
Video
Download |
|
|
perf_tutor 
perf_tutor is described in the FX Composer user guide -- a simple project designed to help you explore some of FX Composer's performance analysis tools (Be sure to accept a local copy of the perf_tutor.fx when you load this project, so that it's freely-editable as you work with this one!). |
|
 |
 |
Download |
|
|
post_spot 
A 2D effect that applies a "spotlight" to the entire frame using frame-buffer alpha blending, and then layers it with the "sepia" toning shader.. "post_spot"ontains simple spot and bumpy techniques, while "sepia" allows arbitrary color toning and/or desaturation of any color image. |
|
 |
 |
Whitepaper
Download |
|
|
shadowSpot2 
Spotlight with the cone angle defined by the shadow projection. Fast and flexible |
|
 |
 |
Whitepaper
Download |
|
|
oneCycleSkin 
"oneCycleSkin" combines a photographically-based texture of a single fingertip and the "painted sphere" technique to quickly get a lifelike appearance at a high fill rate |
|
 |
 |
Download |
|
|
ToksvigAA 
ToksvigAA shows how to use texturing inside a BRDF,
so that the anti-aliasing inherent in the texture engine can be used
for arbitrary surface calculations. In this specific case, the
specular highlight function is pre-calculated, and its values
placed in a table (as a texture). The calculation is done by CPU-side
HLSL code, just once before rendering begins. The values in this
lookup table are then read as texture inputs by the BRDF. Since
the complete shading function is pre-calculated, rather than just
a portion, the texture antialiasing covers the entire high-freuqency
highlight -- typical bump- or normal-mapping schemes would only
antialias one or two terms of the specular function, which would
still be high-frequency and would exhibit aliasing. Both AA and
non-AA versions of the specular function are provided in the shader,
as alternative techniques that can be easily compared in the shaded
display. |
|
 |
 |
Basic
Whitepaper
Video
Download |
|
|
grisaille 
From Siggraph 2004 - "grisaille" shading permits a simple numeric "flattening" of the overall shading, similar to engraved stone grisaille |
|
 |
 |
Download |
|
|
dusk_gloom 
"dusk_gloom" shows tricks you can try yourself, combining image layers by using the "ScriptExecute Sorter" subwindow of the FXComposer Materials pane. The complete effect is created by combining "post_bloom" with two copies of "post_negative": negative->bloom->negative to create "gloom" from the "bloom." |
|
 |
 |
Whitepaper
Download |
|
|
fluid 
"fluid" is an image-processing effect. Be sure to "splash" using the mouse! |
|
 |
 |
Download |
|
|
relief_maps 
"relief_maps" is a sample from our skilled friend Fabio Policarpo. It uses "relief mapping," an alternative to the usual bump or normal mapping. Not only does relief mapping disturb the surface normals, but also creates realistic geometric displacments in the shading -- and even casts shadows from those displacements. |
|
 |
 |
Texture
Video
Download |
|
|
displace_maps 
Another great sample project from Fabio Policarpo. This sample uses textre-encoded displacement vectors to create the perspective illusion of displacement mapping without actually altering geometry |
|
 |
 |
Texture
Video
Download |
|
|
hwShadowMap 
"hwShadowMap" enables NVIDIA's built-in HW support
for shadow-mapping from D24S8 depth textures (format "D24S8_SHADOWMAP")
this shadow mappng is faster than using floating-point surfaces
and comes with built-in shadow filtering for top-notch results. The
view frustum and render-to-texture tasks are maganed by macros from
the header file "shadow_map.fxh" and bind automatically to the scene
lamp. Setting the shader and setting the "Textures" source display to
"scene" allows you to see the view from the shadow rendering pass,
specified by a DXSAS "RenderPort." |
|
 |
 |
Shadow
Whitepaper
Video
Download |
|
|
sharpRims 
A combination of effects: gradient preprocessing from a dynamically-geneated texture; rim-lit plastic showing subsurface scattering emulation and complex-surface highlight edge effects; an overall unsharp masking effect applied to the entire rendered frame |
|
 |
 |
Download |
|
|
shadow_fp_pcf 
shadow_fp_pcf uses a floating-point frame buffer as a shadow map to delive the highest-quality shadow, based on percentage-closer filtering (PCF). Instead of using NVIDIA's built-in PCF function, this effect performs PCF in the pixel shader itself, using shader model 3.0 looping to permit a much larger number of samples and a softer-looking result. |
|
 |
 |
Whitepaper
Download |
|
|
paint_blur 
paint_blur is a nv4x-class demo of floating
point buffers and indirect texture access. The mouse allows
you to "liquify" an image in real time, but in this case the
"liquified" image is blurred against the original image via
an accumulation buffer, creating the complete paint-on motion
blur effect |
|
 |
 |
Whitepaper
Download |
|
|
paint_HDR 
paint_HDR is much like a regular simple paint
program, but the pixels it uses are based on 16-bit floating-point
values. This makes it perfect for touching-up HDR files etc. This
paint shader has two controls to manage brightness one for the
brightness of the brush (which can even be negative) and one
for the brightness of the overall image exposure or "white level."
Bright brush strokes may appear white, but ajusting the
exposure can reveal their true colors. Thanks to the
developer/artist at NVIDIA's GPU Jackpot who asked for this shader
making it from the existing paint_brush shader took less than
an hour, right there at the event! |
|
 |
 |
Whitepaper
Download |
|
|
shadowOverlay 
shadowOverlay shows a simple hack to add overlaid shadows to a scene regardless of how it was actually shaded -- mostly to show just how important shadowing is, even to a completely "unlit" model |
|
 |
 |
Whitepaper
Download |
|
|
DebugCab 
Geometry from NVIDIA's "Time Machine" truck, showing a variety of vertex values and scene coordinate systems encoded as colors and patterns. See the descriptions of the "SeeValues" and "SeeSpaces" HLSL shaders for more details |
|
 |
 |
Download |
|
|
nightfall 
Using textures as lighting values |
|
 |
 |
Download |
|
|
chain 
A simple industrial chain with two shaders,
both featuring a cube reflection map. The metal chain links
themselves use the fast and simple "metalRefl" shader and are
tinted to look like common hardened steel. The chain cover, a
flexible plastic tube, uses "BumpGlossed," which incorporates
a bumpmap (the pattern gives the simple model complex bending,
more like a flexible tube) and a fresnel-attenuated reflectivity
(more like real plastic surfaces). |
|
 |
 |
BRDF
Video
Download |
|
|
corona 
Animated noisy glow effects around each object,
"Corona" is an animated extension of "post_halo" and "post_glowTrail"
with the simple addition of noise. Objects are rendered into a
texture, that texture swizzled and blurred, noise used to repeatedly
offset the texels, and over several frames each new frame is tinted,
faded, and moved by noise to a new location for a fire-like effect
around the edges of each object. |
|
 |
 |
Image Postprocessing
Video
Download |
|
|
alien_gooch 
Animated "goochy" alien showing an animated NVB file generated by 3DStudio Max |
|
 |
 |
Download |
|
|
3DPaint 
3DPaint on a teapot functions on GeForce FX,
but works even better using blendable FP16 textures on GeForce 6
and higher. Requirement: the input 3D model must have valid,
non-overlaping texture coordinates. The technique works by
comparing the object's UV coordiates to the corrent paintbrush
position.
Be sure to be aware of the "Paint Now" toggle that turns active
painting on and off. |
|
 |
 |
Whitepaper
Download |
|
|
displace2 
Show vertex-shader texture fetch for displaced surface. Changing the tesselation paramters of the cylinder will alter the effeciveness of this technique, depending on the texture chosen. Remember that the texture must be in 32-bit-fp format |
|
 |
 |
Download |
|
|
fireball 
volume-texture fireball |
|
 |
 |
Download |
|
|
fire 
Animated layered fire, based on Yury Uralsky's
"Volumetric Fire" post on Cg
Shaders.Org.
The shader revolves a cross section of a flame image around the
Y axis to produce a cylindrical volume, and then perturbs the
texture coordinates with 4 octaves of animated 3D procedural
noise to produce the flame effect. This simpling is displayed
on multiple parallel transparent camera-facing
planes. |
|
 |
 |
Texture
Video
Download |
|
|
hemisphere_lighting 
hemisphere_lighting project from Microsoft |
|
 |
 |
Download |
|
|
ocean 
ocean waves |
|
 |
 |
Download |
|
|
PointAimShadow 
In this example, the shadow map from one lamp is aimed automatically at the second "dummy" point light (which doesn't provide illumination, we only use its location as an aim point). An advantage of this method is that the overall size of the show texels, relative to the object, will remain relatively constant regardless of where the light may move. |
|
 |
 |
Whitepaper
Download |
|
|
selfAlign 
Sprites that always face the camera, aimed by the vertex shader without CPU intervention |
|
 |
 |
Download |
|
|
scene_tiles 
image processing trick |
|
 |
 |
Whitepaper
Download |
|
|
scene_mandelbrot 
scene_mandelbrot shows a mandelbrot set computed in Shader Model 2. Compare to the SM3 version! |
|
 |
 |
Download |
|
|
thinFilm 
Colored highlights create the illusion of a thin lastic or oily film on any surface. Pixel-shaded on GeForce FX and higher. |
|
 |
 |
Download |
|
|
subsurface1 
Texture-based subsurface scattering emulation.
In this effect, render-to-texture is used to store a depth image
from the ivantage point of the light source #151; that is, a shadow
map. The map is stored in one channel an floating-point image, while
another channel stores the fresnel attentuation (realtive to the
light) of each surface point. For the final render, each visible
point is compared to the shadow depth. If the point is farther from
the light than the stored shadow depth, it is considered shadowed
but rather than just losing all illumination, the illumination
is attentuate by distance through the object, to simulate
light tunneling through a translucent medium. The stored fresnel
term is also sampled, so that light striking at grazing angles, which
would in nature be reflected-away, is not inadertently included in this
material-diffusion effect. |
|
 |
 |
Whitepaper
Download |
|
|
sharedShadows 
Using a single shadow map for multiple lights |
|
 |
 |
Whitepaper
Download |
|
|
Wire 
Using textured anti-aliased lines, create an object-space Wireframe on any object |
|
 |
 |
Download |
|
|
scene_raytrace (.fx shader) 
An actual raytracer witten in HLSL |
|
 |
 |
Environment
Download |
|
|
scene_MandelbrotPS3 (.fx shader) 
Mandelbrot Set in a ps_3 pixel shader |
|
 |
 |
Fractal
Download |
|
|
post_edgeOverlayPS3 (.fx shader) 
Edge detection overlayed on scene
handy with "toon" shading |
|
 |
 |
Image Postprocessing
Whitepaper
Download |
|
|
PointShadowAim (.fx shader) 
PointShadowAim uses shadow maps created along an
"aim point" one light is the shadw source, while
another (which contributes no illumination) is used to as an aim
point. The shadow-camera projection will always center on the aim
point, and is guaranteed to enclose a spherical volume around the
aim point as defined by the radius parameter. The light itself
can then be moved around freely, far or near, and the shadow will
aways be well-formed and with roughly the same number of texels. |
|
 |