Presentation is loading. Please wait.

Presentation is loading. Please wait.

Anisotropic Noise Alex Goldberg Matthias ZwickerFrédo Durand University of California, San DiegoMIT CSAIL PixelActive Inc.

Similar presentations


Presentation on theme: "Anisotropic Noise Alex Goldberg Matthias ZwickerFrédo Durand University of California, San DiegoMIT CSAIL PixelActive Inc."— Presentation transcript:

1

2 Anisotropic Noise Alex Goldberg Matthias ZwickerFrédo Durand University of California, San DiegoMIT CSAIL PixelActive Inc.

3 Procedural Noise Pioneered by Ken Perlin more than 20 years ago Powerful primitive for texture synthesis Valuable for small details [Perlin, 99]

4 Noise Properties Simple, irregular appearance 2D Noise

5 Noise Properties Simple, irregular appearance – Octaves combine for complex textures – Use directly or as input to another function Noise Octaves Summed (Fractal) Noise + + + + =

6 Noise 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

7 2D Noise Distortion 2D noise textures still prevalent Unsightly parameterization artifacts 3D Noise [Olano,05] 2D Noise [Olano,05] Stretching Artifact

8 Noise Filtering 2D noise textures can use hardware anisotropic texture filtering 3D noise hard to filter without aliasing

9 3D Noise Filtering Common approach: octave truncation Exclude octaves that would lead to aliasing + + Foreground

10 3D Noise Filtering Common approach: octave truncation Exclude octaves that would lead to aliasing + + ForegroundNear-Background

11 3D Noise Filtering Common approach: octave truncation Exclude octaves that would lead to aliasing + + ForegroundNear-Background Background

12 Anisotropic Filtering Circular pixel projects to an elliptical footprint Surface Space Screen Space x y

13 Anisotropic Filtering Circular pixel projects to an elliptical footprint Surface Frequency Space Fourier Transform Surface Space Screen Space x y

14 Noise In The Frequency Domain Spatial Domain + = +

15 Noise In The Frequency Domain Spatial Domain + = + Frequency Domain

16 Anisotropic Noise Filtering = * Pixel Footprint Noise Spectrum Anisotropic-Filtered Noise Spectrum Frequency domain multiplication = Anisotropic Filtering

17 Frequency Space Footprint Octave Truncation Frequency Analysis

18 1 st Octave Spectrum

19 2 nd Octave Spectrum Octave Truncation Frequency Analysis

20 1 st Octave Spectrum 2 nd Octave Spectrum Aliasing! Octave Truncation Frequency Analysis

21 1 st Octave Spectrum 2 nd Octave Spectrum 3 rd Octave Spectrum Aliasing! Octave Truncation Frequency Analysis

22 1 st Octave Spectrum 2 nd Octave Spectrum 3 rd Octave Spectrum Aliasing! Blurriness! Octave Truncation Frequency Analysis

23 Octave truncation: aliasing and blurriness isotropic filtering Blurriness Aliasing Ideal Anisotropic Spectrum Truncated Spectrum Spectrum Showdown

24 Perlin Noise Spectrum Perlin Noise not tightly band-limited Wide overlap makes octave truncation harder Perlin Frequency Spectra Overlaid Octaves

25 Perlin Noise Spectrum Perlin Noise not tightly band-limited Wide overlap makes octave truncation harder Perlin Frequency Spectra Overlaid Octaves

26 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] Perlin Spectrum Wavelet Noise Spectrum

27 Noise Today 3D Noise: Uniform features, no anisotropic filtering 3D Noise Blurriness

28 Noise Today 3D Noise: Uniform features, no anisotropic filtering 2D Noise: Anisotropic filtering, stretching artifacts 3D Noise 2D Noise Stretching Artifact Blurriness

29 Anisotropic Noise Band-limited, anisotropic filtering Uniform features on parameterized meshes Efficient implementation

30 Anisotropic Noise Outline Anisotropic Noise Tiles Noise tile synthesis Parametric distortion compensation Anisotropic filtering GPU implementation

31 The Basic Idea Partition the frequency domain into orientations Partitioned Frequency Domain Noise Orientation Spectra

32 Frequency Palette Spatial Domain Tiles Frequency Domain ORIENTATIONS

33 Frequency Palette SCALES Spatial Domain ORIENTATIONS Additional frequencies by scaling base tiles

34 Single Noise Octave Noise Tiles Single Noise Octave + + + + = Spatial Domain Frequency Domain

35 Steerable Noise Approximate arbitrary frequency spectra Example: Elliptical spectrum Target Spectrum Approximated Spectrum

36 Steerable Noise 19 No Fourier / Inverse Transform at runtime Tile frequency ranges known in advance Output is a linear blend of spatial noise tiles

37 Steering Texture Steerable Noise Approximate arbitrary frequency spectra Example: Elliptical spectra with steering texture Approximated Spectra

38 Steerable Noise Steering Texture Approximated Spectra Output Noise Approximate arbitrary frequency spectra Example: Elliptical spectra with steering texture

39 Anisotropic Noise Outline Anisotropic Noise Tiles Noise tile synthesis Parametric distortion compensation Anisotropic filtering GPU implementation

40 Noise Synthesis Steps 1. Generate frequency-domain white noise Frequency Domain

41 Noise Synthesis Steps 2. Multiply with oriented, band-limited filter masks Frequency Domain white noise * * * * = = = = Filter Masks Noise Tile Spectra

42 Noise Synthesis Steps 3. Inverse Fourier transform yields spatial noise tiles F -1 Noise Tile Spectra Spatial Domain Noise Tiles

43 Extension to 3D noise Could be extended to 3D noise Output would be a set of volume textures – Significant memory cost So lets stick with 2D noise…

44 Anisotropic Noise Outline Anisotropic Noise Tiles Noise tile synthesis Parametric distortion compensation Anisotropic filtering GPU implementation

45 Parameterization Distortions 2D noise suffers from parameterization artifacts Distorted Mesh Mesh Parameterization Stretching Artifacts

46 Parameterization Distortions 2D noise suffers from parameterization artifacts Distorted Mesh Mesh Parameterization Stretching Artifacts

47 Frequency Space Analysis u v Texture Space Texture Frequency Space

48 Frequency Space Analysis u v Texture Space t s Local Object Space Texture Frequency Space

49 u v Texture Space t s Local Object Space Frequency Space Analysis Texture Frequency SpaceObject Frequency Space

50 Frequency Space Analysis t s Local Object Space Object Frequency Space t s Local Object Space

51 Frequency Space Analysis t s Local Object Space Object Frequency Space Texture Frequency Space

52 Frequency Space Analysis t s Local Object Space u v Texture Space Object Frequency Space Texture Frequency Space

53 t s Local Object Space u v Texture Space Frequency Space Analysis Object Frequency Space Texture Frequency Space

54 Distortion Compensation Goal Approximate target spectrum at this triangle Approach: use anisotropic spectrum control Target Frequency Spectrum

55 Spectrum Approximation... +...... * * ** ** ++ ++ + + + ++ Compute tile weights and store per-vertex Multiple scales required Target Spectrum Noise Tile Spectra 00 12 11 01 02 10

56 Spectrum Approximation... +...... * * ** ** ++ ++ + + + ++ Compute tile weights and store per-vertex Multiple scales required Target Spectrum Noise Tile Spectra 00 12 11 01 02 10

57 Tile Weight Computation Fast heuristic approach Approximate each subband as center point Evaluate target spectrum at each point Target SpectrumSubband Centers

58 Spectral Results Target SpectrumHeuristic Fit More orientations would produce a tighter fit Four works well in practice

59 Distortion Compensation Results No Distortion Compensation Distorted Mesh Mesh Parameterization

60 Distortion Compensation Results With Distortion Compensation Distorted Mesh Mesh Parameterization

61 Distortion Compensation Results No Distortion Compensation Distorted Mesh Mesh Parameterization

62 Distortion Compensation Results With Distortion Compensation Distorted Mesh Mesh Parameterization

63 Distortion Compensation Results No Distortion Compensation Distorted Mesh Mesh Parameterization

64 Distortion Compensation Results With Distortion Compensation Distorted Mesh Mesh Parameterization

65 Distortion Compensation Results No Distortion Compensation Distorted Mesh Mesh Parameterization

66 Distortion Compensation Results With Distortion Compensation Distorted Mesh Mesh Parameterization

67 Distortion Compensation Animation Distortion Compensation (uniform appearance) No Distortion Compensation (noticeable stretching)

68 Anisotropic Noise Outline Anisotropic Noise Tiles Noise tile synthesis Parametric distortion compensation Anisotropic filtering GPU implementation

69 Anisotropic 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

70 Anisotropic Filtering Recap Pixel projects to elliptical footprint Frequency footprint shows representable frequencies Frequency Space Footprint

71 Anisotropic Filtering Recap Frequency Space FootprintGaussian Filter Footprint Pixel projects to elliptical footprint Frequency footprint shows representable frequencies

72 Anisotropic Noise Filtering Evaluate at subband centers for tile weights – As with distortion compensation Subband Centers Gaussian Filter Footprint

73 Anisotropic Noise Results Isotropic Filter (octave truncation)

74 Anisotropic Noise Results Anisotropic Noise

75 Anisotropic Noise Results Isotropic Filter (octave truncation)

76 Anisotropic Noise Results Anisotropic Noise

77 Anisotropic Noise Outline Anisotropic Noise Tiles Noise tile synthesis Parametric distortion compensation Anisotropic filtering GPU implementation

78 GPU 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

79 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 Cost

80 OctavesAnisotropic Noise FPS 1377 2307 3263 Performance Timings (1680 x 1050 noise samples) GeForce 6800 4 orientations, 3 scales

81 3D Effects With 2D Noise Cork-like WoodPine-like WoodMarble Most solid functions require uniform surface noise Satisfied by Anisotropic Noise

82 Filtering Nonlinear Functions Not technically correct for nonlinear functions Good results in practice

83 Animated Noise Texture coordinate shifting Pre-pass blend between 3 noise tiles

84 Limitations 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

85 Conclusion Anisotropic noise Fast, band-limited noise with anisotropic filtering Uniform features on paramerized meshes Steerable spectrum for anisotropic control

86 Acknowledgments Paul Green MIT pre-reviewers Arash Keshmirian Hugues Hoppe Microsoft New Faculty Fellowship Sloan Fellowship


Download ppt "Anisotropic Noise Alex Goldberg Matthias ZwickerFrédo Durand University of California, San DiegoMIT CSAIL PixelActive Inc."

Similar presentations


Ads by Google