Upload
tanya-fitton
View
215
Download
0
Tags:
Embed Size (px)
Citation preview
AnisotropicNoiseAnisotropicNoise
Alex GoldbergMatthias Zwicker Frédo Durand
University of California, San Diego MIT CSAIL
PixelActive Inc.
Procedural NoiseProcedural Noise
• Pioneered by Ken Perlin more than 20 years ago
• Powerful primitive for texture synthesis
• Valuable for small details
[Perlin, ‘99] [Perlin, ‘99]
Noise PropertiesNoise Properties
• Simple, irregular appearance
2D Noise
Noise PropertiesNoise Properties
• Simple, irregular appearance
– Octaves combine for complex textures
– Use directly or as input to another function
Noise Octaves Summed (Fractal) Noise
+
+
+ + =
Noise TodayNoise Today
• Important for modern games– Increasing content demand
– Hand-created content time-consuming
• GPUs allow real-time noise
• Olano Noise (2005): Fast GPU results– 3D noise in two texture lookups
2D Noise Distortion2D Noise Distortion
• 2D noise textures still prevalent
• Unsightly parameterization artifacts
3D Noise
[Olano,’05]
2D Noise
[Olano,’05]
Stretching Artifact
Noise FilteringNoise Filtering
• 2D noise textures can use hardware anisotropic texture filtering
• 3D noise hard to filter without aliasing
3D Noise Filtering3D Noise Filtering
• Common approach: octave truncation
• Exclude octaves that would lead to aliasing
++
Foreground
3D Noise Filtering3D Noise Filtering
• Common approach: octave truncation
• Exclude octaves that would lead to aliasing
++
Foreground Near-Background
3D Noise Filtering3D Noise Filtering
• Common approach: octave truncation
• Exclude octaves that would lead to aliasing
++
Foreground Near-Background Background
Anisotropic FilteringAnisotropic Filtering
• Circular pixel projects to an elliptical footprint
Surface Space
Screen Spacex
y
Anisotropic FilteringAnisotropic Filtering
• Circular pixel projects to an elliptical footprint
Surface Frequency Space
Fourier Transform
Surface Space
Screen Spacex
y
Noise In The Frequency DomainNoise In The Frequency Domain
Spatial Domain
+ =+
Noise In The Frequency DomainNoise In The Frequency Domain
Spatial Domain
+ =+
Frequency Domain
Anisotropic Noise FilteringAnisotropic Noise Filtering
=*
Pixel Footprint Noise Spectrum Anisotropic-Filtered Noise Spectrum
Frequency domain multiplication = Anisotropic Filtering
Frequency Space Footprint
Octave Truncation Frequency AnalysisOctave Truncation Frequency Analysis
Octave Truncation Frequency AnalysisOctave Truncation Frequency Analysis
1st Octave Spectrum
1st Octave Spectrum 2nd Octave Spectrum
Octave Truncation Frequency AnalysisOctave Truncation Frequency Analysis
1st Octave Spectrum 2nd Octave Spectrum
Aliasing!
Octave Truncation Frequency AnalysisOctave Truncation Frequency Analysis
1st Octave Spectrum 2nd Octave Spectrum 3rd Octave Spectrum
Aliasing!
Octave Truncation Frequency AnalysisOctave Truncation Frequency Analysis
1st Octave Spectrum 2nd Octave Spectrum 3rd Octave Spectrum
Aliasing! Blurriness!
Octave Truncation Frequency AnalysisOctave Truncation Frequency Analysis
• Octave truncation:
• aliasing and blurriness
• isotropic filtering
Blurriness
Aliasing
Ideal Anisotropic Spectrum Truncated Spectrum
Spectrum ShowdownSpectrum Showdown
Perlin Noise SpectrumPerlin Noise Spectrum
• Perlin Noise not tightly band-limited
• Wide overlap makes octave truncation harder
Perlin Frequency Spectra
Overlaid Octaves
Perlin Noise SpectrumPerlin Noise Spectrum
• Perlin Noise not tightly band-limited
• Wide overlap makes octave truncation harder
Perlin Frequency Spectra
Overlaid Octaves
Wavelet Noise (Cook, DeRose 2005)Wavelet Noise (Cook, DeRose 2005)
• Tighter frequency extent than Perlin Noise
– But filtering still isotropic
• Aliasing / blurriness tradeoff high even for tightly band-limited functions
[Cook, DeRose,’05] [Cook, DeRose,’05]
Perlin Spectrum Wavelet Noise Spectrum
Noise TodayNoise Today
• 3D Noise: Uniform features, no anisotropic filtering
3D NoiseBlurriness
Noise TodayNoise Today
• 3D Noise: Uniform features, no anisotropic filtering
• 2D Noise: Anisotropic filtering, stretching artifacts
3D Noise 2D Noise
Stretching Artifact
Blurriness
Anisotropic NoiseAnisotropic Noise
• Band-limited, anisotropic filtering
• Uniform features on parameterized meshes
• Efficient implementation
Anisotropic Noise OutlineAnisotropic Noise Outline
• Anisotropic Noise Tiles
• Noise tile synthesis
• Parametric distortion compensation
• Anisotropic filtering
• GPU implementation
The Basic IdeaThe Basic Idea
• Partition the frequency domain into orientations
Partitioned Frequency Domain Noise Orientation Spectra
Frequency PaletteFrequency Palette
Spatial DomainTiles
FrequencyDomain
ORIENTATIONS
Frequency PaletteFrequency PaletteS
CA
LES
Spatial Domain
ORIENTATIONS
• Additional frequencies by scaling base tiles
Single Noise OctaveSingle Noise Octave
Noise Tiles Single Noise Octave
+
+
+ + =
Spatial D
omain
Frequency D
omain
Steerable NoiseSteerable Noise
• Approximate arbitrary frequency spectra
• Example: Elliptical spectrum
Target Spectrum Approximated Spectrum
Steerable NoiseSteerable Noise19
• No Fourier / Inverse Transform at runtime
• Tile frequency ranges known in advance
• Output is a linear blend of spatial noise tiles
Steering Texture
Steerable NoiseSteerable Noise
• Approximate arbitrary frequency spectra
• Example: Elliptical spectra with steering texture
Approximated Spectra
Steerable NoiseSteerable Noise
Steering Texture
Approximated Spectra Output Noise
• Approximate arbitrary frequency spectra
• Example: Elliptical spectra with steering texture
Anisotropic Noise OutlineAnisotropic Noise Outline
• Anisotropic Noise Tiles
• Noise tile synthesis
• Parametric distortion compensation
• Anisotropic filtering
• GPU implementation
Noise Synthesis StepsNoise Synthesis Steps
1. Generate frequency-domain white noise
Frequency Domain
Noise Synthesis StepsNoise Synthesis Steps
2. Multiply with oriented, band-limited filter masks
Frequency Domainwhite noise
*
*
*
*
=
=
=
=
Filter Masks Noise Tile Spectra
Noise Synthesis StepsNoise Synthesis Steps
3. Inverse Fourier transform yields spatial noise tiles
F-1 F-1 F-1 F-1
Noise Tile Spectra
Spatial Domain Noise Tiles
Extension to 3D noiseExtension to 3D noise
• Could be extended to 3D noise
• Output would be a set of volume textures
– Significant memory cost
• So let’s stick with 2D noise…
Anisotropic Noise OutlineAnisotropic Noise Outline
• Anisotropic Noise Tiles
• Noise tile synthesis
• Parametric distortion compensation
• Anisotropic filtering
• GPU implementation
Parameterization DistortionsParameterization Distortions
• 2D noise suffers from parameterization artifacts
Distorted Mesh
Mesh Parameterization
Stretching Artifacts
Parameterization DistortionsParameterization Distortions
• 2D noise suffers from parameterization artifacts
Distorted Mesh
Mesh Parameterization
Stretching Artifacts
Frequency Space AnalysisFrequency Space Analysis
u
v
Texture Space
Texture Frequency Space
Frequency Space AnalysisFrequency Space Analysis
u
v
Texture Space
t
s
Local Object Space
Texture Frequency Space
u
v
Texture Space
t
s
Local Object Space
Frequency Space AnalysisFrequency Space Analysis
Texture Frequency Space Object Frequency Space
Frequency Space AnalysisFrequency Space Analysis
t
s
Local Object Space
Object Frequency Space
t
s
Local Object Space
Frequency Space AnalysisFrequency Space Analysis
t
s
Local Object Space
Object Frequency Space Texture Frequency Space
Frequency Space AnalysisFrequency Space Analysis
t
s
Local Object Space
u
v
Texture Space
Object Frequency Space Texture Frequency Space
t
s
Local Object Space
u
v
Texture Space
Frequency Space AnalysisFrequency Space Analysis
Object Frequency Space Texture Frequency Space
Distortion Compensation GoalDistortion Compensation Goal
• Approximate target spectrum at this triangle
• Approach: use anisotropic spectrum control
Target Frequency Spectrum
Spectrum ApproximationSpectrum Approximation
...+
......
*
*
* *
* *
+ +
++
++ +
+ +
≈
• Compute tile weights and store per-vertex
• Multiple scales required
Target Spectrum
Noise Tile Spectra
00
12 11
01 02
10
Spectrum ApproximationSpectrum Approximation
...+
......
*
*
* *
* *
+ +
++
++ +
+ +
≈
• Compute tile weights and store per-vertex
• Multiple scales required
Target Spectrum
Noise Tile Spectra
00
12 11
01 02
10
Tile Weight ComputationTile Weight Computation
• Fast heuristic approach
• Approximate each subband as center point
• Evaluate target spectrum at each point
Target SpectrumSubband Centers
Spectral ResultsSpectral Results
Target Spectrum Heuristic Fit
• More orientations would produce a tighter fit
• Four works well in practice
Distortion Compensation ResultsDistortion Compensation Results
• No Distortion Compensation
Distorted Mesh
Mesh Parameterization
Distortion Compensation ResultsDistortion Compensation Results
• With Distortion Compensation
Distorted Mesh
Mesh Parameterization
Distortion Compensation ResultsDistortion Compensation Results
• No Distortion Compensation
Distorted Mesh
Mesh Parameterization
Distortion Compensation ResultsDistortion Compensation Results
• With Distortion Compensation
Distorted Mesh
Mesh Parameterization
Distortion Compensation ResultsDistortion Compensation Results
• No Distortion Compensation
Distorted Mesh
Mesh Parameterization
Distortion Compensation ResultsDistortion Compensation Results
• With Distortion Compensation
Distorted Mesh
Mesh Parameterization
Distortion Compensation ResultsDistortion Compensation Results
• No Distortion Compensation
Distorted Mesh
Mesh Parameterization
Distortion Compensation ResultsDistortion Compensation Results
• With Distortion Compensation
Distorted Mesh
Mesh Parameterization
Distortion Compensation AnimationDistortion Compensation Animation
Distortion Compensation (uniform appearance)
No Distortion Compensation (noticeable stretching)
Anisotropic Noise OutlineAnisotropic Noise Outline
• Anisotropic Noise Tiles
• Noise tile synthesis
• Parametric distortion compensation
• Anisotropic filtering
• GPU implementation
Anisotropic FilteringAnisotropic Filtering
• Any 2D filtering approach can be used
• 2D hardware anisotropic filtering
– Memory bandwidth-intensive
• Our approach: view-dependent tile weights
– Relies only on bilinear filtering
– Minimal computational cost
Anisotropic Filtering RecapAnisotropic Filtering Recap
• Pixel projects to elliptical footprint
• Frequency footprint shows representable frequencies
Frequency Space Footprint
Anisotropic Filtering RecapAnisotropic Filtering Recap
Frequency Space Footprint Gaussian Filter Footprint
• Pixel projects to elliptical footprint
• Frequency footprint shows representable frequencies
Anisotropic Noise FilteringAnisotropic Noise Filtering
• Evaluate at subband centers for tile weights
– As with distortion compensation
Subband Centers Gaussian Filter Footprint
Anisotropic Noise ResultsAnisotropic Noise Results
Isotropic Filter (octave truncation)
Anisotropic Noise ResultsAnisotropic Noise Results
Anisotropic Noise
Anisotropic Noise ResultsAnisotropic Noise Results
Isotropic Filter (octave truncation)
Anisotropic Noise ResultsAnisotropic Noise Results
Anisotropic Noise
Anisotropic Noise OutlineAnisotropic Noise Outline
• Anisotropic Noise Tiles
• Noise tile synthesis
• Parametric distortion compensation
• Anisotropic filtering
• GPU implementation
GPU ImplementationGPU Implementation
• Distortion weights: CPU or vertex shader
• Antialiasing weights: pixel shader or vertex shader
• Noise tiles packed into a single RGBA texture
– 256x256x4 = 256KB
Separate Tile Textures Packed RGBA Texture
• Bottleneck: texture lookups
• One lookup per scale
– 3 scales for first octave usually sufficient
• Only one more lookup for each higher octave
– Olano Noise: 6 lookups for 3 octaves
– Anisotropic Noise: 5 lookups for 3 octaves
• Matches or outperforms Olano Noise
Performance CostPerformance Cost
Octaves AnisotropicNoise FPS
1 377
2 307
3 263
PerformancePerformance
• Timings (1680 x 1050 noise samples)
• GeForce 6800
• 4 orientations, 3 scales
3D Effects With 2D Noise3D Effects With 2D Noise
Cork-like WoodPine-like Wood Marble
• Most solid functions require uniform surface noise
• Satisfied by Anisotropic Noise
Filtering Nonlinear FunctionsFiltering Nonlinear Functions• Not technically correct for nonlinear functions
• Good results in practice
Animated NoiseAnimated Noise
• Texture coordinate shifting
• Pre-pass blend between 3 noise tiles
LimitationsLimitations
• Mesh parameterization required
– But can compensate for imperfect parameterizations
• Filtering imperfect for nonlinear functions
– But often produces good results in practice
• Additional per-vertex data for pre-computed weights
– But can compute in vertex shader
ConclusionConclusion
Anisotropic noise
• Fast, band-limited noise with anisotropic filtering
• Uniform features on paramerized meshes
• Steerable spectrum for anisotropic control
AcknowledgmentsAcknowledgments