Assignments Please fill the dropboxes… Lights Still catching up on grading. Questions. Final exam effects Final exam effect Deliverables: Presentation: Research (Grads only) Final exam period Shader code Monday, May 19th Documentation 12:30 - 2:30pm Describe shader params ICL5 Explain chosen implementation. 15 minutes per presentation List constraints. Give results. All the world’s a stage Plan for this week Tonight: Light Looking for stage crew Critters Lighting controls Premiere of Virtual Theatre Lights in RenderMan May 3rd at noon-2pm Lights in GLSL Rehearsals this and next week A bit about shadows Thursday: Interested? Please see me. Lighting Lab 1
Light – Parameters Lights in Computer Graphics Types of light Controllable parameters for light sources: Ambient Position / Direction Background light Where is the light coming from and in what direction Directional Light Intensity Light arriving from a given direction regardless of the shading point How intense is the light Point Light source Distribution Light positioned at a given point. Light distributed equally in all What is the area of effect the beam directions Spotlight How does intensity vary within that area. Point light source with a limited beam of effect And of course…color Area light source Same triplet used for color and intensity (0 - 1) Light emitted from a finite geometric area Light - Directional Light Light - Simple Point Light Source Light distributed equally in all directions Light distributed equally from a given direction Point light source at infinity is an estimation for sunlight Light - Spotlight Light -- Spotlight Basic CG Spotlight Spotlight controls Point light source with a limited beam Beam shape Beam Falloff How intensity is effected as one moves across the beam A Intensity Falloff How intensity is effected by the distance from light source to shading point. 2
Light - Spotlight Light - Spotlight Basic Shape -- cone Shape Barn doors (beam shape) [Advanced Renderman] Light - Spotlight Light - Spotlight Beam Falloff Shape – Gobos (use go between to shape beam) Light - Spotlight Light - Spotlight Beam Falloff (at edge) Intensity falloff Intensity of light will decrease proportional to the inverse of the distance squared. 3
Light -- Spotlight Light -- area light source Intensity Falloff Light emitted from a finite geometric source. Note: RenderMan spec has support for area light sources however prman does not implement these features Area light sources are often modeled as a set of point light sources. Light - Distribution RenderMan Area Light Sources A note about illuminance sampled point sources within area Recall the rendering equation: [ ] I ( x , x ) g ( x , x ) ( x , x ) ( x , x , x ) I ( x , x ) d x � = � � � + � � � � � � � � � � S Illuminance is meant to estimate this integration Questions? RenderMan RenderMan Light shaders Light source shader “global variables” Used to define the color, intensity, and direction of Input: the light. Ps -- point on the surface that requested data from the Works in concert with illuminance light Illuminance will loop over all light sources in a given solid (others for area light source -- not supported in prman) angle Output: It will query each light source to see if the light source has effect. L -- vector giving the direction from the light to the point being shaded Querying == running the light source shader for the light source. Cl -- Color of the energy being emitted by the source in the direction of Ps. 4
Renderman Renderman Implementing ambient light Reason d’etre of the light source shader is to set L and Cl. Handy lighting constructs that’ll do that for light ambient (float intensity = 1; you. color lightcolor = 1;) For directional light: { solar (vector axis, float spread) { Cl = intensity * lightcolor; } L = 0; L will always be set to axis } solar will compare illuminance angle to axis if not in range, solar block will not be executed, RenderMan RenderMan light For point light sources distantlight (float intensity = 1; illuminate ( point from) { color lightcolor = 1; } point from = point “shader” (0,0,0); point to = point “shader” (0, 0, 1);) illuminate (point from; vector axis; { float angle) { solar (to-from, 0) { Cl = intensity * lightcolor; } } } Sets L to the vector from the from point to Ps. Also will check if illuminance spread is within range RenderMan RenderMan light light simplespot (float intensity = 1; pointlight (float intensity = 1; color lightcolor = 1; color lightcolor = 1; point to = point “shader” (0, 0, 1); point from = point “shader” (0,0,0);) point from = point “shader” (0,0,0); { float coneangle = radians (30);) illuminate (from) { { Cl = intensity * lightcolor / (L . L); uniform vector A = normalize (to-from); } illuminate (from, A, coneangle) { } Cl = intensity * lightcolor / (L . L); } 1/d 2 intensity } falloff 5
RenderMan RenderMan Then…in a surface shader: Light categories: light simplespot (float intensity = 1; illuminance (“mylight”, P, Nf, PI/2) { color lightcolor = 1; point to = point “shader” (0, 0, 1); … point from = point “shader” (0,0,0); } float coneangle = radians (30); string __category =- “mylight”) RenderMan GLSL Surface shaders can also access light shader OpenGL lighting model: parameters from within an illuminance loop: Emissive, ambient, diffuse, specular float lightsource (string param, output type No solar or illuminate construct result) If light source has a parameter named param with Will need to code these construct as the given type, result is filled with the parameter GLSL functions. value and the function returns 1.0…Otherwise the function returns 0.0. GLSL - spotlight GLSL - spotlight Simulating illuminate float illuminate (float3 P, float3 from, float3 axis, float angle) { float3 V = normalize (P - from); float cosCone = cos (angle); float cosDir = dot (V, axis); if (cosCone <= cosDir) return 1; else return 0; } 6
GLSL - multiple lights GLSL - built in uniform variables Array of light structures. Use plain old for loop to simulate the illuminance loop Questions? Break? Projective Texture Maps Textures Projective texture mapping is a method Projective texture mapping of texture mapping that allows a textured image to be projected onto a scene as if by a slide projector. What is it good for? Shadow generation Light masks -- gobos. Projective texture mapping Camera Coordinates How it’s done. Camera Orientation Basic projection The camera has it’s own 3D coordinate system based on it’s orientation Create coordinate system about light u,v,n As you would set up your camera u corresponds to x (as seen by the camera) Convert point from world to light space v corresponds to y (as seen by the camera) Do perspective by dividing by z. n corresponds to z (as seen by the camera) Negative n is into the scene 7
Camera coordinates Camera Coordinates Defining camera orientation View coordinate system may not coincide with world coordinate system. Provide the camera location (eyepoint) Must transform point in world (x,y,z) to a point in Indicate what direction the camera is looking (lookat) coordinate system of view (u,v,n) Give the “up” direction of the camera u x Then � � � � n = eyepoint – lookat � � � � v y u = up x n � � � � M = v = n x u n z � � � � Note: right handed coordinate system � � � � 1 1 � � � � Camera Coordinates Perspective projection (u x ,u y ,u z ) are Replace camera with light! u u u -eye• u coordinates of unit u x y z vector w.r.t. world space v v v -eye• v x y z M = Similar for v, n, -eye• n n n n ( eye ) is the origin of x y z 0 0 0 1 view space w.r.t world space If ups are aligned, simply use negative eye location values in the fourth column Perspective Projection Perspective Projection In object space: M = Model matrix V p = View Matrix (of projector) P p = Projection Matrix (of projector) 8
Recommend
More recommend