Introduction & Background Modifications Conclusion Modified Noise for Evaluation on Graphics Hardware Marc Olano Computer Science and Electrical Engineering University of Maryland, Baltimore County Graphics Hardware 2005
Introduction & Background Modifications Conclusion Outline Introduction & Background Modifications Conclusion
Introduction & Background Modifications Conclusion Outline Introduction & Background Noise? Perlin noise Modifications Conclusion
Introduction & Background Modifications Conclusion Why Noise? • Introduced by [Perlin, 1985] • Heavily used in production animation • Technical Achievement Oscar in 1997 • “Salt,” adds spice to shaders
Introduction & Background Modifications Conclusion Why Noise? • Introduced by [Perlin, 1985] • Heavily used in production animation • Technical Achievement Oscar in 1997 • “Salt,” adds spice to shaders + =
Introduction & Background Modifications Conclusion Noise Characteristics • Random • No correlation between distant values • Repeatable/deterministic • Same argument always produces same value • Band-limited • Most energy in one octave (e.g. between f & 2f) 1 2 3 4 5 6 7
Introduction & Background Modifications Conclusion Noise Characteristics • Random • No correlation between distant values • Repeatable/deterministic • Same argument always produces same value • Band-limited • Most energy in one octave (e.g. between f & 2f) 1 2 3 4 5 6 7
Introduction & Background Modifications Conclusion Noise Characteristics • Random • No correlation between distant values • Repeatable/deterministic • Same argument always produces same value • Band-limited • Most energy in one octave (e.g. between f & 2f) 1 2 3 4 5 6 7
Introduction & Background Modifications Conclusion Gradient Noise • Original Perlin noise [Perlin, 1985] • Perlin Improved noise [Perlin, 2002] • Lattice based • Value=0 at integer lattice points • Gradient defined at integer lattice • Interpolate between • 1/2 to 1 cycle each unit 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Original Improved
Introduction & Background Modifications Conclusion Gradient Noise • Original Perlin noise [Perlin, 1985] • Perlin Improved noise [Perlin, 2002] • Lattice based • Value=0 at integer lattice points • Gradient defined at integer lattice • Interpolate between • 1/2 to 1 cycle each unit 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Original Improved
Introduction & Background Modifications Conclusion Gradient Noise • Original Perlin noise [Perlin, 1985] • Perlin Improved noise [Perlin, 2002] • Lattice based • Value=0 at integer lattice points • Gradient defined at integer lattice • Interpolate between • 1/2 to 1 cycle each unit 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Original Improved
Introduction & Background Modifications Conclusion Value Noise • Lattice based • Value defined at integer lattice points • Interpolate between • At most 1/2 cycle each unit • Significant low-frequency content • Easy hardware implementation with lower quality 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Linear Interp Cubic Interp
Introduction & Background Modifications Conclusion Value Noise • Lattice based • Value defined at integer lattice points • Interpolate between • At most 1/2 cycle each unit • Significant low-frequency content • Easy hardware implementation with lower quality 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Linear Interp Cubic Interp
Introduction & Background Modifications Conclusion Value Noise • Lattice based • Value defined at integer lattice points • Interpolate between • At most 1/2 cycle each unit • Significant low-frequency content • Easy hardware implementation with lower quality 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Linear Interp Cubic Interp
Introduction & Background Modifications Conclusion Value Noise • Lattice based • Value defined at integer lattice points • Interpolate between • At most 1/2 cycle each unit • Significant low-frequency content • Easy hardware implementation with lower quality 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Linear Interp Cubic Interp
Introduction & Background Modifications Conclusion Hardware Noise • Value noise • PixelFlow [Lastra et al., 1995] • Perlin Noise Pixel Shaders [Hart, 2001] • Noise textures • Gradient noise • Hardware [Perlin, 2001] • Complex composition [Perlin, 2004] • Shader implementation [Green, 2005]
Introduction & Background Modifications Conclusion Noise Details • Subclass of gradient noise • Original Perlin • Perlin Improved • All of our proposed modifications
Introduction & Background Modifications Conclusion Find the Lattice • Lattice-based noise: must find nearest lattice points p x ,� p y ,� p z ) • Point � p = ( � • has integer lattice location p x ⌋ , ⌊ � p y ⌋ , ⌊ � p z ⌋ ) = ( X , Y , Z ) � p i = ( ⌊ � • and fractional location in cell � p f = � p − � p i = ( x , y , z )
Introduction & Background Modifications Conclusion Find the Lattice • Lattice-based noise: must find nearest lattice points p x ,� p y ,� p z ) • Point � p = ( � • has integer lattice location p x ⌋ , ⌊ � p y ⌋ , ⌊ � p z ⌋ ) = ( X , Y , Z ) � p i = ( ⌊ � • and fractional location in cell � p f = � p − � p i = ( x , y , z )
Introduction & Background Modifications Conclusion Find the Lattice • Lattice-based noise: must find nearest lattice points p x ,� p y ,� p z ) • Point � p = ( � • has integer lattice location p x ⌋ , ⌊ � p y ⌋ , ⌊ � p z ⌋ ) = ( X , Y , Z ) � p i = ( ⌊ � • and fractional location in cell � p f = � p − � p i = ( x , y , z ) X Y
Introduction & Background Modifications Conclusion Find the Lattice • Lattice-based noise: must find nearest lattice points p x ,� p y ,� p z ) • Point � p = ( � • has integer lattice location p x ⌋ , ⌊ � p y ⌋ , ⌊ � p z ⌋ ) = ( X , Y , Z ) � p i = ( ⌊ � • and fractional location in cell � p f = � p − � p i = ( x , y , z ) x y X Y
Introduction & Background Modifications Conclusion Gradient • Random vector at each lattice point is a function of � p i g ( � p i ) • A function with that gradient grad ( � p ) = g ( � p i ) • � p f = g x ( � p i ) ∗ x + g y ( � p i ) ∗ y + g z ( � p i ) ∗ z
Introduction & Background Modifications Conclusion Gradient • Random vector at each lattice point is a function of � p i g ( � p i ) • A function with that gradient grad ( � p ) = g ( � p i ) • � p f = g x ( � p i ) ∗ x + g y ( � p i ) ∗ y + g z ( � p i ) ∗ z
Introduction & Background Modifications Conclusion Gradient • Random vector at each lattice point is a function of � p i g ( � p i ) • A function with that gradient grad ( � p ) = g ( � p i ) • � p f = g x ( � p i ) ∗ x + g y ( � p i ) ∗ y + g z ( � p i ) ∗ z
Introduction & Background Modifications Conclusion Interpolate • Interpolate nearest 2 n gradient functions • 2D noise ( � p ) is influenced by � p i + (0 , 0) ; � p i + (0 , 1) ; � p i + (1 , 0) ; � p i + (1 , 1) • Linear interpolation • lerp ( t , a , b ) = (1 − t ) a + t b • Smooth interpolation 3 t 2 − 2 t 3 � for original noise • fade ( t ) = 10 t 3 − 15 t 4 + 6 t 5 for improved noise • flerp ( t , a , b ) = lerp ( fade ( t ) , a , b )
Introduction & Background Modifications Conclusion Interpolate • Interpolate nearest 2 n gradient functions • 2D noise ( � p ) is influenced by � p i + (0 , 0) ; � p i + (0 , 1) ; � p i + (1 , 0) ; � p i + (1 , 1) • Linear interpolation • lerp ( t , a , b ) = (1 − t ) a + t b • Smooth interpolation 3 t 2 − 2 t 3 � for original noise • fade ( t ) = 10 t 3 − 15 t 4 + 6 t 5 for improved noise • flerp ( t , a , b ) = lerp ( fade ( t ) , a , b )
Introduction & Background Modifications Conclusion Interpolate • Interpolate nearest 2 n gradient functions • 2D noise ( � p ) is influenced by p i + (0 , 0) ; � p i + (0 , 1) ; � p i + (1 , 0) ; � p i + (1 , 1) � • Linear interpolation • lerp ( t , a , b ) = (1 − t ) a + t b • Smooth interpolation 3 t 2 − 2 t 3 � for original noise • fade ( t ) = 10 t 3 − 15 t 4 + 6 t 5 for improved noise • flerp ( t , a , b ) = lerp ( fade ( t ) , a , b )
Introduction & Background Modifications Conclusion Interpolate • Interpolate nearest 2 n gradient functions • 2D noise ( � p ) is influenced by p i + (0 , 0) ; � p i + (0 , 1) ; � p i + (1 , 0) ; � p i + (1 , 1) � • Linear interpolation • lerp ( t , a , b ) = (1 − t ) a + t b • Smooth interpolation 3 t 2 − 2 t 3 � for original noise • fade ( t ) = 10 t 3 − 15 t 4 + 6 t 5 for improved noise • flerp ( t , a , b ) = lerp ( fade ( t ) , a , b )
Recommend
More recommend