Noise and Procedural Techniques John Spitzer Simon Green NVIDIA Corporation.

Slides:



Advertisements
Similar presentations
16.1 Si23_03 SI23 Introduction to Computer Graphics Lecture 16 – Some Special Rendering Effects.
Advertisements

03/16/2009Dinesh Manocha, COMP770 Texturing Surface’s texture: its look & feel Graphics: a process that takes a surface and modifies its appearance using.
Shading CMSC 435/634. RenderMan Light Displacement Surface Volume Imager.
Procedural Textures Jian Huang, CS594, Fall 2002 This set of slides references slides used at Ohio State and “Texturing and modeling” by Ebert, et. al.
Ted Adelson’s checkerboard illusion. Motion illusion, rotating snakes.
Computer Graphics Bing-Yu Chen National Taiwan University.
Texture Visual detail without geometry. Texture Mapping desire for heightened realism.
CS 691 Computational Photography
COMPUTER GRAPHICS CS 482 – FALL 2014 OCTOBER 6, 2014 TEXTURE MAPPING TEXTURES BUMP MAPPING ENVIRONMENT MAPPING PROCEDURAL TEXTURING.
School of Computing Science Simon Fraser University
1GR2-00 GR2 Advanced Computer Graphics AGR Lecture 12 Solid Textures Bump Mapping Environment Mapping.
Advanced Computer Graphics (Fall 2010) CS 283, Lecture 3: Sampling and Reconstruction Ravi Ramamoorthi Some slides.
CSCE 641 Computer Graphics: Image Sampling and Reconstruction Jinxiang Chai.
Sampling and Pyramids : Rendering and Image Processing Alexei Efros …with lots of slides from Steve Seitz.
Order-Independent Texture Synthesis Li-Yi Wei Marc Levoy Gcafe 1/30/2003.
CSCE 641 Computer Graphics: Image Sampling and Reconstruction Jinxiang Chai.
Fractal Image Compression
Advanced Computer Graphics (Spring 2006) COMS 4162, Lecture 3: Sampling and Reconstruction Ravi Ramamoorthi
Texture Mapping from Watt, Ch. 8 Jonathan Han. Topics Discussed Texture Map to Models Bump Maps, Light Maps Environment (Reflection) Mapping 3D Textures.
Course Website: Computer Graphics 11: 3D Object Representations – Octrees & Fractals.
Procedural Shape Synthesis on Subdivision Surfaces
CSCE 641 Computer Graphics: Fourier Transform Jinxiang Chai.
Advanced Computer Graphics (Spring 2005) COMS 4162, Lecture 3: Sampling and Reconstruction Ravi Ramamoorthi
Connecting with Computer Science 2 Objectives Learn why numbering systems are important to understand Refresh your knowledge of powers of numbers Learn.
Advanced Computer Graphics CSE 190 [Spring 2015], Lecture 3 Ravi Ramamoorthi
10/21/03CS679 - Fall Copyright Univ. of Wisconsin Last Time Terrain Dynamic LOD.
David Runyon Lauren Stana Kelsey Vaughn Molly Shelestak.
Computer Graphics: Programming, Problem Solving, and Visual Communication Steve Cunningham California State University Stanislaus and Grinnell College.
Noise Based Texture Noise Based Texture CMPS260 Presentation Guoping Xu Mar. 05, 2003.
1 Texture. 2 Overview Introduction Painted textures Bump mapping Environment mapping Three-dimensional textures Functional textures Antialiasing textures.
Interactive Terrain Synthesis
Procedural Textures.
Image Synthesis Rabie A. Ramadan, PhD 3. 2 Our Problem.
11/11/04© University of Wisconsin, CS559 Fall 2004 Last Time Shading Interpolation Texture mapping –Barycentric coordinates for triangles.
University of Texas at Austin CS384G - Computer Graphics Fall 2008 Don Fussell Texture Mapping.
Shading. What is Shading? Assigning of a color to a pixel in the final image. So, everything in shading is about how to select and combine colors to get.
Teksture. Lastnosti snovi O teksturah 2D-3D lepljenje tekstur.
Graphics Graphics Korea University cgvr.korea.ac.kr 1 Texture Mapping 고려대학교 컴퓨터 그래픽스 연구실.
09/09/03CS679 - Fall Copyright Univ. of Wisconsin Last Time Event management Lag Group assignment has happened, like it or not.
Texture Mapping Applications 2. Parallax Mapping with Slope  parallax mapping assumes that the surface is a single plane  a better approximation  surface.
Shading CMSC 435/634. RenderMan Light Displacement Surface Volume Imager.
Image Processing Xuejin Chen Ref:
Shading CMSC 435/634.
Image Processing Edge detection Filtering: Noise suppresion.
Subdivision Schemes Basic idea: Start with something coarse, and refine it into smaller pieces for rendering –We have seen how subdivision may be used.
Noises & Turbulences. Why Noises? One of the most popular procedural technique Very few things in nature are regular Great variety of noises exists The.
Image Processing Basics. What are images? An image is a 2-d rectilinear array of pixels.
Create Procedural Textures with Perlin Noises
02/05/2002 (C) University of Wisconsin 2002, CS 559 Last Time Color Quantization Mach Banding –Humans exaggerate sharp boundaries, but not fuzzy ones.
Real-Time Rendering Cody Tankersley.  Term Project Overview ◦ Desired Shaders  What is noise?  A Little History….  Noise Functions ◦ Some Implementation.
1 Dr. Scott Schaefer Antialiasing. 2/70 What is aliasing?
第三课. Overview of this Section Concept of Texture Mapping ( 纹理映射 ) 2D Texture 3D Texture Environment Mapping Bump Mapping Others OpenGL Implementation.
Greg Humphreys CS445: Intro Graphics University of Virginia, Fall 2003 Texture Mapping Greg Humphreys University of Virginia CS 445, Fall 2003.
67535: Computer Games Programming Week 2: Randomness: Perlin noise and Fractals Lighting: Phong-Blinn-Giraud; HDR Tutorial: Phong lighting in a fragment.
Part II – Photorealistic Rendering (1) Texture (4) CPSC 591/691.
CSE 681 Texture Mapping: Solid Texturing. CSE 681 Texture Mapping Visual complexity on demand Vary display properties over object Location on object used.

Advanced Computer Graphics
- photometric aspects of image formation gray level images
Noise | Course Overview Jim Whitehead
Texture Mapping cgvr.korea.ac.kr.
Shading CMSC 435/634.
لجنة الهندسة الكهربائية
Texture Mapping: Solid Texturing
Texture Mapping 고려대학교 컴퓨터 그래픽스 연구실.
Intensity Transformation
Adding Surface Detail 고려대학교 컴퓨터 그래픽스 연구실.
Adding Surface Detail 고려대학교 컴퓨터 그래픽스 연구실.
Texture Mapping: Solid Texturing
Review and Importance CS 111.
Presentation transcript:

Noise and Procedural Techniques John Spitzer Simon Green NVIDIA Corporation

Overview What is procedural texturing? Advantages and disadvantages When to use procedural texturing What is noise? Ideal noise characteristics Spectral synthesis Demos...

What is Procedural Texturing? Code vs. tables Classic time vs. storage space trade-off

Advantages of Procedural Texturing Compact - code is small (compared to textures) No fixed resolution - "infinite" detail, limited only by precision Unlimited extent - can cover arbitrarily large areas, no repeating Parameterized - can easily generate a large no. of variations on a theme Solid texturing (avoids 2D mapping problem)

Disadvantages of Procedural Texturing Computation time (big ouch!) Hard to code and debug Aliasing

When to use Procedural Textures Don’t use them just for the hell of it! Procedurals are good for animating effects – fire, water, clouds, explosions…..or anywhere where a repeating texture would be obvious Combine the best aspects of both techniques – e.g. painted maps + noise to add variation

Procedural Noise Noise is an important part of many procedural textures Used everywhere in production rendering Procedural noise provides a controlled method of adding randomness to: –Color, texture –Bump map / displacement maps –Animation –Terrains, anything else…

Ideal Noise Characteristics Can’t just use rand()! An ideal noise function has: –repeatable pseudorandom values –specific range (typically [-1,1] or [0,1]) –band-limited frequency ~= 1 –no obvious repeating patterns –invariance under rotation and translation “Random yet smooth”

What does Noise look like? Imagine creating a big block of random numbers and blurring them:

What does Noise look like? Random values at integer positions Varies smoothly in-between. In 1D: 78 x noise(x) This is value noise, gradient noise is zero at integer positions

Spectral Synthesis Narrow-band noise by itself is not very exciting Summations of multiple frequencies are! Like Fourier synthesis (summing sine waves) Each layer is known as an “octave” since the frequency typically doubles each time Increase in frequency known as “lacunarity” (gap) Change in amplitude/weight known as “gain”

Fractal Sum = +1/41/2 +1/8+1/16 Freq = 1Freq = 2 Freq = 4Freq = 8

Turbulence Ken Perlin’s trick – assumes noise is signed [-1,1] Exactly like fBm, but take absolute value of noise Introduces discontinuities that make the image more “billowy” float turbulence(float3 p, int octaves, float lacunarity, float gain) { float sum = 0; float amp = 1; for(int i=0; i<octaves; i++) { sum += amp * abs(noise(p)); p *= lacunarity; amp *= gain; } return sum; }

Turbulence =

Pixel Shader Noise Implementation of Perlin’s original (Academy- award winning) algorithm Gradient noise over R 3, scalar output Uses 2 1D textures as look-up tables Compiles to around 40 instructions

Pixel Shader Noise using 3D Textures Pre-compute 3D texture containing random values Pre-filtering with tri-cubic filter helps avoid linear interpolation artifacts 4 lookups into a single 64x64x64 3D texture produces reasonable looking turbulence

Applying Colour Tables to Noise

Using Noise to Perturb Patterns colormap(sin(x + turbulence(P)))

Questions, comments, feedback? John Spitzer, Simon Green,