Download presentation

Presentation is loading. Please wait.

Published byBeau Wilks Modified over 3 years ago

1
Shading CMSC 435/634

2
RenderMan Light Displacement Surface Volume Imager

3
Displacement Given – Position – Normal Compute – Position – Normal Displacement LightSurface Volume Imager

4
Surface color Given – Position Compute – Color – Opacity Surface Light Displacement Volume Imager

5
Lighting Given – Surface Position Compute – Light Direction – Light Color Light Surface Displacement Volume Imager

6
Volume Effects Given – Position – Color Compute – New Color Volume LightSurface Displacement Imager

7
Image Effects Given – Pixel Color Compute – Pixel Color Imager LightSurface Displacement Volume

8
Non-real time vs. Real-time RenderMan GPU Texture/ Buffer Texture/ Buffer Vertex Geometry Fragment Application Displayed Pixels Displayed Pixels Light Displayed Pixels Displayed Pixels Application Displacement Surface Volume Imager

9
RenderMan vs. GPU RenderMan – Developed from General CPU code – Seconds to hours per frame – 1000s of lines – “Unlimited” computation, texture, memory, … GPU – Developed from fixed- function hardware – Tens of frames per second – 1000s of instructions – Limited computation, texture, memory, …

10
History (not real-time) Testbed [Whitted and Weimer 1981] Shade Trees [Cook 1984] Image Synthesizer [Perlin 1985] RenderMan [Hanrahan and Lawson 1990] Multi-pass RenderMan [Peercy et al. 2000] GPU acceleration [Wexler et al. 2005]

11
History (real-time) Custom HW [Olano and Lastra 1998] Multi-pass standard HW [Peercy, Olano, Airey and Ungar 2000] Register combiners [NVIDIA 2000] Vertex programs [Lindholm et al. 2001] Compiling to mixed HW [Proudfoot et al. 2001] Fragment programs Standardized languages Compute

12
width gap height gap brick mortar RenderMan Brick

13
surface brick( uniform float width =.2, uniform float height =.1, uniform float gap =.05, color brick = color(1,0,0), color mortar = color(.5,.5,.5) ) { varying color bc; /* compute brick color */ normal Nf = faceforward(normalize(N),I) Oi = Os; Ci = Oi*bc*(ambient()+diffuse(Nf)); } Brick Shader

14
Brick Color Where am I in my brick? –“ brick coordinates ” bsbt varying float bs, bt; /* compute brick coordinates */ if (bs < width && bt < height) bc = brick; else bc = mortar;

15
Brick Coordinates bt = mod(t, height+gap); bs = s; if (mod((t-bt)/(height+gap), 2) == 1) bs += (width+gap)/2; bs = mod(bs, width+gap);

16
16 RenderMan Shader Variables Cs, Os u, v, du, dv, s, t time, dtime P, dPdu, dPdv, dPdtime, N, Ng E, I L, Cl, Ol (In illuminance) Ci, Oi

17
RenderMan Outputs Displacement – P, N – Set DisplacementBounds! Surface, Volume, Imager – Ci, Oi Light – Cl, Ol

18
Shading Methods Repeating Patterns – mod, sin – Divide and floor Shapes – Implicit form: is this pixel inside Color tables Noise or computed patterns 18

19
Noise Subtleties Many noise functions based on a lattice – Piecewise function between integer coordinates – Hash of integer coordinates control points Interpolating values easy but poor – Even with higher-order interpolation Perlin’s noise – Passes through 0 at each integer – Hash gives gradient

20
Noise Characteristics Repeatable Locally continuous but distant points uncorrolated values – RenderMan [0,1], average 0.5 – Perlin’s [-1,1], average 0 1/2 – 1 cycle per unit Versions for 1D-4D input

21
Perlin Noise in RenderMan 21 surface noisetest(float sc=1) { Ci = float noise(floor(1/t)*sc*P); }

22
22 Fractional Brownian Motion (fBm) // Combine octaves, scaled by 1/f for(f=1; f<=floor(1/t); f*=2) Ci += (float noise(f*sc*P)-.5)/f; Ci +=.5;

23
23 Turbulence // fBm using abs(noise) for(f=1; f<=floor(1/t); f*=2) Ci += abs(float noise(f*sc*P)-.5)/f; Ci +=.5;

24
Advanced Shading Methods Perturbed patterns – Adjust position, radius, etc. with noise Bombing – Divide space into cells – Compute random position in each cell – Check if pixel is inside shape Blending – Fade effects in and out with smoothstep

25
RenderMan Shader Debugging printf – Format codes for colors and points – Use conditionals to just print a few pixels! Render as color – Map intermediate values to 0-1 – Interpret results

26
GPU Shading Texture/ Buffer Texture/ Buffer Vertex Geometry Fragment Application Displayed Pixels Displayed Pixels

27
GPU Shading Choices OS: Windows, Mac, Linux API: DirectX, OpenGL Language: HLSL, GLSL, Cg, … Compiler: DirectX, OpenGL, Cg, ASHLI Runtime: CgFX, ASHLI, OSG (& others), sample code

28
GLSL / HLSL Vertex, Geometry & Fragment/Pixel C-like, if/while/for Structs & arrays Float + small vector and matrix – Swizzle & mask (a.xyz = b.xxw) Common math & shading functions

29
Vertex Demo: Blend Positions

30
Vertex + Fragment Demo: Fresnel Environment Map

31
Noise Controlled, repeatable randomness – Still spotty implementation – Can use texture or compute

32
Modified Noise [Olano 2005] Three relatively independent modifications – New computable hash – Change gradient computation – Reorder computation Variety of computation/texture options – Can just store in a texture – Can compute with some texture accesses – Can compute with no texture accesses

Similar presentations

Presentation is loading. Please wait....

OK

CS418 Computer Graphics John C. Hart

CS418 Computer Graphics John C. Hart

© 2018 SlidePlayer.com Inc.

All rights reserved.

By using this website, you agree with our use of **cookies** to functioning of the site. More info in our Privacy Policy and Google Privacy & Terms.

Ads by Google

Ppt on endangered species free download Ppt on paintings and photographs related to colonial period of america Ppt on body language with pictures Dsp ppt on dfts Free ppt on business etiquette Ppt on transportation in animals for class 10 Ppt on solar system download Ppt on chromosomes and chromatin are both made Ppt on electronic media in communication Ppt on regional trade agreements example