Difference between revisions of "GAM670/DPS905 Weekly Schedule 20111"
(→This Week) |
(→This Week) |
||
Line 113: | Line 113: | ||
* Vertex Shaders | * Vertex Shaders | ||
* Lighting in Vertex Shaders | * Lighting in Vertex Shaders | ||
− | ** [http://msdn.microsoft.com/en-us/library/aa451203.aspx Lighting Formulas] | + | ** [http://msdn.microsoft.com/en-us/library/aa451203.aspx Lighting Formulas] - note the corrections below |
*** Notation | *** Notation | ||
***: G<sub>a</sub> - global ambient color | ***: G<sub>a</sub> - global ambient color | ||
Line 120: | Line 120: | ||
***: C<sub>s</sub> - material specular color | ***: C<sub>s</sub> - material specular color | ||
***: Atten<sub>i</sub> - attenuation of light i | ***: Atten<sub>i</sub> - attenuation of light i | ||
+ | ****: Atten<sub>i</sub> = 1/(a<sub>0</sub> + a<sub>1</sub> d<sub>i</sub> + a<sub>2</sub> d<sub>i</sub><sup>2</sup>) | ||
+ | ****: Atten<sub>i</sub> = [0, 1] | ||
+ | ****: d<sub>i</sub> - distance from light i | ||
+ | ***: Spot<sub>i</sub> - spot factor of light i | ||
***: L<sub>a</sub><sub>i</sub> - ambient color of light i | ***: L<sub>a</sub><sub>i</sub> - ambient color of light i | ||
***: L<sub>d</sub><sub>i</sub> - diffuse color of light i | ***: L<sub>d</sub><sub>i</sub> - diffuse color of light i | ||
***: L<sub>s</sub><sub>i</sub> - specular color of light i | ***: L<sub>s</sub><sub>i</sub> - specular color of light i | ||
+ | ***: L<sub>dir</sub><sub>i</sub> - direction vector of light i | ||
+ | ***: N - normal to the surface at the vertex | ||
+ | ***: H<sub>i</sub> - halfway vector = | ||
+ | ****: = norm(norm(Camera<sub>position</sub> - Vertex<sub>position</sub>) + L<sub>dir</sub><sub>i</sub>) | ||
+ | ****: = norm([0,0,1] + L<sub>dir</sub><sub>i</sub>) - less computationally intensive - assumes that camera is at infinity along z axis | ||
***: | ***: | ||
*** Ambient | *** Ambient | ||
− | ***: C<sub>a</sub> * ( G<sub>a</sub> + Atten<sub>i</sub> * | + | ***: C<sub>a</sub> * ( G<sub>a</sub> + sum [Atten<sub>i</sub> * L<sub>a</sub><sub>i</sub>] ) |
*** Diffuse | *** Diffuse | ||
− | ***: C<sub>d</sub> * [ L<sub>d</sub><sub>i</sub> * (N . L<sub>dir</sub>) * Atten<sub>i</sub> ] | + | ***: C<sub>d</sub> * sum [ L<sub>d</sub><sub>i</sub> * (N . L<sub>dir</sub><sub>i</sub>) * Atten<sub>i</sub> ] |
*** Specular | *** Specular | ||
− | ***: | + | ***: C<sub>s</sub> * sum [ L<sub>s</sub><sub>i</sub> * (N . H<sub>i</sub>) * Atten<sub>i</sub> ] |
** [http://msdn.microsoft.com/en-us/library/ff471376%28v=vs.85%29.aspx HLSL Intrinsic Functions] | ** [http://msdn.microsoft.com/en-us/library/ff471376%28v=vs.85%29.aspx HLSL Intrinsic Functions] | ||
*** [http://msdn.microsoft.com/en-us/library/bb509630%28v=vs.85%29.aspx normalize()] - normalize a vector | *** [http://msdn.microsoft.com/en-us/library/bb509630%28v=vs.85%29.aspx normalize()] - normalize a vector |
Revision as of 17:23, 2 February 2011
GAM670/DPS905 | Weekly Schedule | Student List | Project Requirements | Teams and their Projects | Student Resources
Contents
GAM670/DPS905 -- Weekly Schedule 20111
Week 1 - Jan 9
This Week
- Suggested Enhancements
- Assignment Discussion
- Review of base code
- camera, sound, and light attachments now made at the Frame class
- textures still attach at the object level
- texture connection uncoupled from drawing
- time tracking now within HUD class completely
- introduction of relative reference frames
- very simple collision detection
- Relative Reference Frames
- Recursive calls
- Vector Frame::position()
- Matrix Frame::rotation()
- Matrix Frame::world()
- Detaching from and attaching to a parent frame
- Frame::attachTo()
- Recursive calls
- Visibility Determination
- Plane
- normal + constant - examples
- equation of a plane: dot(n, x) + D = 0
- positive side of a plane dot(n, x) + D > 0
- test a point for presence within a set of planes
- normal calculations - general rotation matrix - vector and angle
- ViewingFrustum
- parameters
- near-clipping plane
- far-clipping plane
- field of view angle
- aspect ratio
- 6 planes
- near and far planes
- left and right planes
- top and bottom planes
- coding
- constructor
- ViewingFrustum::contains()
- parameters
- Plane
- Finite Size of Objects
- Expansion of the Viewing Frustum
- Bounded Volume
- BoundedVolume : Frame
- BoundedVolume::setRadius()
- BoundedVolume::getRadius()
To Do
Resources
Week 2 - Jan 16
This Week
- Collision Detection
- types of colliders
- spheres
- planes
- axis-aligned bounding boxes
- oriented bounding boxes
- types of colliders
- Comprehensive Camerawork
- rotation about an axis
- order of rotation matters
- Euler angles
- gimble lock
- quaternions
- geometric algebra (more abstract)
- Billboards
- definition, purpose of a billboard
- types of billboards
- SkyBox
- definition of a skybox
- other forms
- Index Buffers
- amount of storage needed for vertex data
- duplication of vertex data
- indexing
- indexed primitives
- Meshes
- Stock Objects
- Sphere
- Cylinder
- Torus
- Utah Teapot
- Simple Mesh COM object
- What is a mesh?
- Create a Mesh
- DrawSubset
- FVF settings
- Stock Objects
To Do
- Form Teams, Identify Members (2-5 members) and add your team and members to Teams 20111 Before Thursday 20th.
- Confirm your name and information at Student List 20111
Resources
Week 3 - Jan 23
This Week
To Do
Resources
Week 4 - Jan 30
This Week
- Vertex Shaders
- Lighting in Vertex Shaders
- Lighting Formulas - note the corrections below
- Notation
- Ga - global ambient color
- Ca - material ambient color
- Cd - material diffuse color
- Cs - material specular color
- Atteni - attenuation of light i
- Atteni = 1/(a0 + a1 di + a2 di2)
- Atteni = [0, 1]
- di - distance from light i
- Spoti - spot factor of light i
- Lai - ambient color of light i
- Ldi - diffuse color of light i
- Lsi - specular color of light i
- Ldiri - direction vector of light i
- N - normal to the surface at the vertex
- Hi - halfway vector =
- = norm(norm(Cameraposition - Vertexposition) + Ldiri)
- = norm([0,0,1] + Ldiri) - less computationally intensive - assumes that camera is at infinity along z axis
- Ambient
- Ca * ( Ga + sum [Atteni * Lai] )
- Diffuse
- Cd * sum [ Ldi * (N . Ldiri) * Atteni ]
- Specular
- Cs * sum [ Lsi * (N . Hi) * Atteni ]
- Notation
- HLSL Intrinsic Functions
- normalize() - normalize a vector
- dot(,) - dot product of two vectors of any size
- length() - length of a vector
- saturate() - clamp scalar, vector, or matrix to [0, 1]
- Lighting Formulas - note the corrections below
To Do
- reorganize framework code so that vertex shader receives product of world, view, and projection matrices
- store viewProjection matrix as an instance variable in Display
- add viewProjection query to Display to extract product of view and projection matrices
- retrieve viewProjection in *::draw() method
- pre-multiply viewProjection by world to obtain composite matrix to pass to vertex shader
- add composite matrix to the constant table in the vertex shader
- reorganize framework code to minimize duplication of heading normalization
- perform normalization of heading in Display::beginDraw()