Download presentation
Presentation is loading. Please wait.
Published byJarred Sperry Modified over 9 years ago
1
Week 7 - Monday
2
What did we talk about last time? Specular shading Aliasing and antialiasing
7
Partially transparent objects significantly increase the difficulty of rendering a scene We will talk about really difficult effects like frosted glass or light bending later Just rendering transparent objects at all is a huge pain because the Z-buffer doesn't work anymore Workarounds: Screen door transparency Sorting Depth peeling
8
We render an object with a checkerboard pattern of holes in it, leaving whatever is beneath the object showing through Problems: It really only works for 50% transparent objects Only one overlapping transparent object really works But it is simple and inexpensive
9
Most transparency methods use the over operator, which combines two colors using the alpha of the one you're putting on top c 0 = α s c s + (1 - α s )c d c s is the new (source) color c d is the old (destination) color c o is the resulting (over) color α s is the opacity (alpha) of the object
10
The over operator is order dependent To render correctly we can do the following: Render all the opaque objects Sort the centroids of the transparent objects in distance from the viewer Render the transparent objects in back to front order To make sure that you don't draw on top of an opaque object, you test against the Z-buffer but don't update it
11
It is not always possible to sort polygons They can interpenetrate Hacks: At the very least, use a Z-buffer test but not replacement Turning off culling can help Or render transparent polygons twice: once for each face
12
It is possible to use two depth buffers to render transparency correctly First render all the opaque objects updating the first depth buffer Make second depth buffer maximally close On the second (and future) rendering passes, render those fragments that are closer than the z values in the first depth buffer but further than the value in the second depth buffer Update the second depth buffer Repeat the process until no pixels are updated
13
1 layer2 layers 3 layers4 layers
14
Alpha values can be used for antialiasing, by lowering the opacity of edges that partially cover pixels Additive blending is an alternative to the over operator c 0 = α s c s + c d This is only useful for effects like glows where the new color never makes the original darker Unlike transparency, it can be applied in any order
16
I don't want to go deeply into gamma The trouble is that real light has a wide range of color values that we need to store in some limited range (such as 0 – 255) Then, we have to display these values, moving back from the limited range to the "real world" range
17
Physical computations should be performed in the linear (real) space To convert that linear space into nonlinear frame buffer space, we have to raise values by a power, typically 0.45 for PCs and 0.55 for Macs Each component of physical color (0.3, 0.5, 0.6) is raised to 0.45 giving (0.582, 0.732, 0.794) then scaled to the 0-255 range, giving (148, 187, 203)
18
Usually, gamma correction is taken care of for you If you are writing something where you need to do computations in the "real life" color space (such as a raytracer), you may have to worry about it Calculations in the wrong space can have visually unrealistic effects
20
We've got polygons, but they are all one color At most, we could have different colors at each vertex We want to "paint" a picture on the polygon Because the surface is supposed to be colorful To appear as if there is greater complexity than there is (a texture of bricks rather than a complex geometry of bricks) To apply other effects to the surface such as changes in material or normal
21
We never get tired of pipelines Go from object space to parameter space Go from parameter space to texture space Get the texture value Transform the texture value Projector function Object space Corresponder function Parameter space Obtain value Texture space Value transform function Texture value Transformed value
22
The projector function goes from the model space (a 3D location on a surface) to a 2D (u,v) coordinate on a texture Usually, this is based on a map from the model to the texture, made by an artist Tools exist to help artists "unwrap" the model Different kinds of mapping make this easier In other scenarios, a mapping could be determined at run time
23
From (u,v) coordinates we have to find a corresponding texture pixel (or texel) Often this just maps directly from u,v [0,1] to a pixel in the full width, height range But matrix transformations can be applied Also, values outside of [0,1] can be given, with different choices of interpretation
24
Usually the texture value is just an RGB triple (or an RGBα value) But, it could be procedurally generated It could be a bump mapping or other surface data It might need some transformation after retrieval
27
Image texturing techniques Procedural texturing
28
Keep working on Project 2 Keep reading Chapter 6 Mipmapping Anisotropic filtering
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.