Meshes. 9 th Week, To gain an understanding of the internal data organization of an ID3DXMesh object
|
|
- Jessie Blake
- 5 years ago
- Views:
Transcription
1 Meshes 9 th Week, 2009 Objectives To gain an understanding of the internal data organization of an ID3DXMesh object To find out how to create, optimize, i and render an ID3DXMesh object To learn how to load the data of an.x file into an ID3DXMesh object To become familiar with several D3DX meshrelated utility functions To learn about bounding volumes, why they are useful, and how to create them using the D3DX functions
2 Geometry Info (1) ID3DXMesh interface inherits the majority of the functionality from its parent, ID3DXBaseMesh ID3DXBaseMesh ID3DXMesh Getting a pointer to a vertex and an index buffers HRESULT ID3DXMesh::GetVertexBuffer(LPDIRECT3DVERTEXBUFFER9* ppvb); HRESULT ID3DXMesh::GetIndexBuffer(LPDIRECT3DINDEXBUFFER9* ppib); Ex) IDirect3DVertexBuffer9* vb = 0; Mesh->GetVertexBuffer( &vb ); IDirect3DIndexBuffer9* ib = 0; Mesh->GetIndexBuffer( &ib ); Geometry Info (2) ID3DXMesh interface (cont ) To lock / unlock the buffers to read or write to them HRESULT ID3DXMesh::LockVertexBuffer(DWORD Flags, BYTE** ppdata); HRESULT ID3DXMesh::LockIndexBuffer(DWORD Flags, BYTE** ppdata); HRESULT ID3DXMesh::UnlockVertexBuffer( ); HRESULT ID3DXMesh::UnlockIndexBuffer( ); To obtain geometry-related related information HRESULT ID3DXMesh::GetDeclaration( D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE] ); DWORD ID3DXMesh::GetNumVertices( ); DWORD ID3DXMesh::GetNumBytesPerVertex( ); DWORD ID3DXMesh::GetNumFaces( );
3 MSDN ID3DXMesh Subsets and the Attribute Buffer (1) Subset a group of triangles in the mesh that can all be rendered using the same attribute Attribute t material, texture, t and render state t Subset 2: Window Render triangles in subset using window attributes Subset 0: Body Render triangles in subset using body attributes Subset 1: Tires Render triangles in subset using tire attributes Subset 3: Lights Render triangles in subset using light attributes < A car broken up by subsets >
4 Subsets and the Attribute Buffer (2) Attribute ID a unique positive integer value for each subset Each triangle in the mesh is given an attribute ID Attribute buffer a DWORD array to store the attribute t IDs for the triangles # of elements in attribute buffer == # of faces Attribute Buffer Triangle 0 Triangle 1 Triangle n Index Buffer Subsets and the Attribute Buffer (3) One-to-one correspondence Entry i in the attribute buffer corresponds with triangle i in the index buffer Three indices in the index buffer of triangle i A = i 33 B = i 3+ 1 C = i Access to the attribute buffer by locking it DWORD *buffer = 0; Mesh->LockAttributeBuffer(lockingFlags, &buffer); // Read or write to attribute buffer... Mesh->UnlockAttributeBuffer( );
5 Drawing Drawing the triangles of a particular subset specified by the AttribId argument HRESULT ID3DXMesh::DrawSubset(DWORD AttribId); Ex) to draw all the triangles that live in subset 0 Mesh->DrawSubset(0); Ex) to draw an entire mesh HR(mFX->BeginPass(0)); for(int j=0; j<mmtrl.size(); j++) { HR(mFX->SetValue(mhMtrl, &mmtrl[j], sizeof(mtrl))); if(mtex[j]!= 0 ) HR(mFX->SetTexture(mhTex, ( mtex[j])); else HR(mFX->SetTexture(mHTex, mwhitetex)); HR(mFX->CommitChanges()); HR(mMesh->DrawSubset(j)); } HR(mFX->EndPass()); Adjacency Info (1) For certain mesh operations, such as optimizing Adjacency array Triangles that are adjacent to a given triangle DWORD array where each entry contains an index identifying a triangle in the mesh Tri 2 Tri 1 Adjacency Array Tri 0 Index Buffer Tri 0 Tri 1 Tri 2
6 Adjacency Info (2) Adjacency array (cont ) An entry i refers to the triangle formed by indices: A = i 33 B = i C = i Particular edge does not have an adjacent triangle ULONG_MAX == 4,294,967, == 1 (DWORD: unsigned 32-bit integer) Must have (ID3DXBASEMESH::GetNumFaces( () * 3) elements Adjacency Info (3) Outputting the adjacency info HRESULT ID3DXMesh::GenerateAdjacency ( FLOAT fepsilon, DWORD* padjacency ); fepsilon value specifying how far two vertices can differ in position and still be considered equal padjacency a pointer to an array of DWORDs that is to be filled with the adjacency info Ex) DWORD *adjacencyinfo = new DWORD[Mesh->GetNumFaces()*3]; Ex) DWORD adjacencyinfo new DWORD[Mesh >GetNumFaces() 3]; Mesh->GenerateAdjacency( 0.001f, adjacencyinfo );
7 Optimizing (1) Reorganizing the vertices and indices of a mesh to render the mesh more efficiently Flags: HRESULT ID3DXMesh::Optimize ( DWORD Flags, CONST DWORD *padjacencyin, DWORD *padjacencyout, DWORD *pfaceremap, LPD3DXBUFFER *ppvertexremap, LPD3DXMESH *ppoptmesh ); D3DXMESHOPT_COMPACT, D3DXMESHOPT_ATTRSORT, D3DXMESHOPT_VERTEXCACHE, D3DXMESHOPT_STRIPREORDER, D3DXMESHOPT_IGNOREVERTS, D3DXMESHOPT_DONOTSPLITDONOTSPLIT D3DXMESH_SYSTEMMEM, D3DXMESH_MANAGED, D3DXMESH_DYNAMIC Optimizing (2) padjacencyin: the adjacency info of the mesh object invoking this method padjacencyout: a DWORD array to be filled with adjacency info of the optimized mesh pfaceremap: a DWORD array to be filled with the face remap info ppvertexremap: an ID3DXBuffer that will be filled with the vertex remap info ppoptmesh: the optimized mesh
8 Optimizing (3) Ex) // Get the adjacency info of the non-optimized mesh. DWORD *adjacencyinfo = new DWORD[Mesh->GetNumFaces()*3]; Mesh->GenerateAdjacency( 0.0f, 0 adjacencyinfo ); // Array to hold optimized adjacency info. DWORD *optimizedadjacencyinfo = new DWORD[Mesh->GetNumFaces()*3]; ID3DXMesh *meshout = 0; HR(Mesh->Optimize( D3DXMESH_MANAGED D3DXMESHOPT_COMPACT C D3DXMESHOPT_ATTRSORT D3DXMESHOPT_VERTEXCACHE, adjacencyinfo, optimizedadjacencyinfo, 0, 0, &meshout)); Optimizing (4) Similar method which actually optimizes the calling mesh object instead of outputting an optimized mesh HRESULT ID3DXMesh::OptimizeInplace ( DWORD Flags, CONST DWORD *padjacencyin, DWORD *padjacencyout, DWORD *pfaceremap, LPD3DXBUFFER *ppvertexremap );
9 The Attribute Table (1) Sorting the geometry of a mesh by its attribute Optimizing a mesh with the D3DXMESHOPT_ATTRSORT flag Subset 0 Subset 1 Subset 2 Attribute Buffer Index Buffer Tri 0 Tri 1 Tri 2 Tri 3 Tri 4 Tri 5 Tri 6 Tri 7 Tri 8 Tri 9 Start Start Start Count Count Count The Attribute Table (2) An array of D3DXATTRIBUTERANGE structure Each entry corresponds to a subset of the mesh typedef struct _D3DXATTRIBUTERANGE { DWORD AttribId; DWORD FaceStart; DWORD FaceCount; DWORD VertexStart; t DWORD VertexCount; } D3DXATTRIBUTERANGE; Rendering a subset very efficiently!! AttribId: thesubsetid FaceStart: an offset into the index buffer (FaceStart * 3) identifying the start of the triangles FaceCount: the number of faces (triangles) VertexStart: an offset into the vertex buffer identifying the start of the vertices VertexCount: the number of vertices
10 The Attribute Table (3) Access to the attribute table of a mesh Two things: returning the number of attributes in the attribute table and filling the attribute table HRESULT ID3DXMesh::GetAttributeTable ( D3DXATTRIBUTERANGE* pattribtable, DWORD* pattribtablesize ); Ex1) to get the number of elements in the attribute table DWORD numsubsets = 0; Mesh->GetAttributeTable( 0, &numsubsets ); D3DXATTRIBUTERANGE table = new D3DXATTRIBUTERANGE[numSubsets]; Mesh->GetAttributeTable( table, &numsubsets ); Ex2) to directly set the attribute table D3DXATTRIBUTERANGE attributetable[12]; // fill attributetable array with data... Mesh->SetAttributeTable( attributetable, 12 ); Cloning (1) Copying the data from one mesh to another HRESULT ID3DXMesh::CloneMesh ( DWORD Options, const D3DVERTEXELEMENT9 *pdeclaration, LPDIRECT3DDEVICE9 pdevice, LPD3DXMESH *ppclonemesh ); Options: D3DXMESH_32BIT, D3DXMESH_SYSTEMMEM, D3DXMESH_MANAGED, MANAGED D3DXMESH_WRITEONLY, D3DXMESH_DYNAMIC pdeclaration: the vertex format we want for the new cloned mesh pdevice: the device ppclonedmesh: the cloned mesh
11 MSDN D3DXMESH Flags Cloning (2) Useful if the options or vertex format need to changing when copying a mesh Ex) D3DVERTEXELEMENT9 elements[] = { {0,0,D3DDECLTYPE_FLOAT3,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_POSITION,0}, {0,12,D3DDECLTYPE_FLOAT3,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_NORMAL,0}, D3DDECLMETHOD DEFAULT D3DDECLUSAGE 0} {0,24,D3DDECLTYPE_FLOAT2,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_TEXCOORD,0}, D3DDECL_END() }; // Assume meshsys is of type ID3DXMesh*. ID3DXMesh* temp = 0; HR(meshSys->CloneMesh( D3DXMESH_SYSTEMMEM, SYSTEMMEM elements, gd3ddevice, &temp));
12 Creating a Mesh (D3DXCreateMesh) (1) Creating an empty mesh Specifying the number of faces and vertices (of some specified format) D3DXCreateMesh allocates the appropriately sized vertex, index, and attribute buffers Manually filling in the mesh s data contents HRESULT ID3DXCreateMesh ( DWORD NumFaces, DWORD NumVertices, DWORD Options, CONST LPD3DVERTEXELEMENT9 *pdeclaration, LPDIRECT3DDEVICE9 pdevice, LPD3DXMESH *ppmesh ); Creating a Mesh (D3DXCreateMesh) (2) Creating an empty mesh (cont ) NumFaces: the number of faces NumVertices: the number of vertices Options: D3DXMESH_32BIT, 32BIT D3DXMESH_SYSTEMMEM, SYSTEMMEM D3DXMESH_MANAGED, D3DXMESH_WRITEONLY, D3DXMESH_DYNAMIC pdeclaration: the vertex format of the mesh vertices pdevice: the device ppmesh: the created mesh
13 Creating a Mesh (D3DXCreateMesh) (3) Ex) D3DVERTEXELEMENT9 elements[] = { {0,0,D3DDECLTYPE_FLOAT3,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_POSITION,0}, {0,12,D3DDECLTYPE_FLOAT3,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_NORMAL,0}, D3DDECLMETHOD DEFAULT D3DDECLUSAGE 0} {0,24,D3DDECLTYPE_FLOAT2,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_TEXCOORD,0}, D3DDECL_END() }; ID3DXMesh* mesh = 0; HR(D3DXCreateMesh( 12, 24, D3DXMESH_MANAGED, elements, gd3ddevice, &mesh )); 3D modelers.x Files To build complex and realistic meshes in a visual and interactive environment with a rich toolset Ex) 3D Studio MAX ( LightWave 3D ( Maya ( and Softimage XSI ( Converters To export the created mesh data (geometry, materials, animations, and other possible useful data) to.x files Ex) PolyTrans ( Deep Exploration ( dexp)
14 .X File Demo Loading an.x File (1)
15 Loading an.x File (2) Loading an.x File (3) void LoadXFile( const std::string& filename, ID3DXMesh** meshout, std::vector<mtrl>& mtrls, std::vector<idirect3dtexture9*>& texs); filename:.x file meshout: the newly created mesh mtrls: the materials of the mesh texs: the textures of the mesh
16 Loading an.x File (4) Loading an.x File (5) HRESULT D3DXLoadMeshFromX ( LPCSTR pfilename, DWORD Options, LPDIRECT3DDEVICE9 pdevice, LPD3DXBUFFER *ppadjacency, LPD3DXBUFFER *ppmaterials, LPD3DXBUFFER *ppeffectinstances, PDWORD pnummaterials, LPD3DXMESH *ppmesh ); filename:.x file Options: D3DXMESH 32BIT D3DXMESH SYSTEMMEM D3DXMESH_32BIT, D3DXMESH_SYSTEMMEM, D3DXMESH_MANAGED, D3DXMESH_WRITEONLY, D3DXMESH_DYNAMIC pdevice: the device
17 Loading an.x File (6) ppadjacency: the adjacency info of the mesh ppmaterials: the material data of the mesh ppeffectinstances: one effect instance per subset to store an.fx filename and the data needed to initialize the effect parameters (in this book,.x files do not carry effect information) pnummaterials: the number of materials for the mesh ppmesh: the created ID3DXMesh object Testing for Vertex Normals
18 Changing the Vertex Format Generating Normals
19 Optimizing.X File Materials (1)
20 .X File Materials (2) Number of materials the mesh contains Argument seven of D3DXLoadMeshFromX function Array of D3DXMATERIAL structures containing the material data Argument five of D3DXLoadMeshFromX function typedef struct D3DXMATERIAL { D3DMATERIAL9 MatD3D; LPSTR ptexturefilename; } D3DXMATERIAL; typedef struct _D3DMATERIAL9 { D3DCOLORVALUE Diffuse; D3DCOLORVALUE Ambient; D3DCOLORVALUE Specular; D3DCOLORVALUE Emissive; float Power; } D3DMATERIAL9;.X File Materials (3).X File doesn t embed the texture data After loading an.x file, the texture data must be loaded given the texture filenames The ith entry in the returned D3DMATERIAL array corresponds with the ith subset The subsets are labeled in the order 0, 1, 2,, n 1
21 New Structures Member Variables
22 Constructor Destructor
23 Rendering Bounding Volumes (1) Common example spheres and axis-aligned bounding boxes (AABB) Others: cylinders, ellipsoids, lozenges, capsules max radius center min To speed up visibility tests and collision tests
24 Bounding Volumes (2) D3DX library provides functions HRESULT D3DXComputeBoundingSphere ( LPD3DXVECTOR3 pfirstposition, DWORD NumVertices, DWORD dwstride, D3DXVECTOR3* pcenter, FLOAT* pradius ); pfirstposition: the position element in the first vertex of an array of vertices NumVertices: the number of vertices dwstride: the size of each vertex in bytes pcenter: the center of the bounding sphere pradius: the radius of the bounding sphere Bounding Volumes (3) D3DX library provides functions (cont ) HRESULT D3DXComputeBoundingBox ( LPD3DXVECTOR3 pfirstposition, DWORD NumVertices, DWORD dwstride, D3DXVECTOR3* pmin, D3DXVECTOR3* pmax ); pfirstposition: the position element in the first vertex of an array of vertices NumVertices: the number of vertices dwstride: the size of each vertex in bytes pmin: the AABB s minimum point pmax: the AABB s maximum point
25 Bounding Box Demo Some New Special Constants
26 Bounding Volume Types Member Variables
27 Constructor Destructor
28 Rendering Exercises Rewrite the Bounding Box demo, but this time, compute the bounding sphere and render it along with the mesh
Meshes Part II. June 13, 2005
Game Programming Meshes Part II June 13, 2005 Objectives To learn how to load the data of an XFile into an ID3DXMesh object To gain an understanding of the benefits of using progressive meshes and how
More informationMeshes. Meshes what are they? How to use them? Progressive Meshes? Doron Nussbaum COMP Meshes 1. Doron Nussbaum COMP Meshes 2
Meshes Doron Nussbaum COMP 3501 - Meshes 1 Meshes what are they? How to use them? Progressive Meshes? Doron Nussbaum COMP 3501 - Meshes 2 Meshes Doron Nussbaum COMP 3501 - Meshes 3 What is a mesh? A collection
More informationD3DX Mesh Objects. Chapter Overview
Chapter 19 D3DX Mesh Objects net, n.: Anything reticulated or decussated at equal distances, with interstices between the intersections Samuel Johnson: Dictionary, 1755 19.1 Overview A surface modelled
More informationShaders Part II. Traditional Rendering Pipeline
Shaders Part II Doron Nussbaum Doron Nussbaum COMP 3501 - Shaders Part II 1 Traditional Rendering Pipeline Traditional pipeline (older graphics cards) restricts developer to texture and the 3-term lighting
More information!" "!#$!"%!&% ' ( )) * ) )+( ( ))+ ))(, ) ( - +,./ )) ) ) $( -( 1), , ) ( -)) ') 5 ' +) 67 4 ) ' 8, ( ) ( 9 :! ; $) ) ; 5<4,4$6 ( =) >
!" "!#$!"%!&% ' ( )) * ) )+( ( ))+ ))(, ) ( - +,./ )) ) ) ( ))) 0 $( -( 1),2, ) ( -))+- 3 4 ') 5 ' +) 67 4 ) ' 8, ( ) ( 9 :! ; $) ) ; 5 " + ) &)) >( ))( -*( /( *( 1 =?/+) *( : == ) + /))(
More informationThe Effects Framework. October 31, Composed of the following components:
Game Programming The Effects Framework October 31, 2005 Rendering Effect Composed of the following components: one ore more rendering passes a list of device states a vertex and/or pixel shader Effect
More informationProgramming With D3DX. Anuj Gosalia Development Lead DirectX Graphics Microsoft Corporation
Programming With D3DX Anuj Gosalia Development Lead DirectX Graphics Microsoft Corporation Talk Overview D3DX 8.0 Overview Mesh functions Skinning using D3DX Effect Framework Preview of what s coming in
More informationFont. Overview. ID3DXFont. ID3DXFont. ID3DXFont 인터페이스를이용해텍스트를렌더링하는방법
Overview Font 인터페이스를이용해텍스트를렌더링하는방법 클래스를이용해텍스트를렌더링하는방법 초당렌더링되는프레임수 (fps) 를계산하는방법 D3DXCreateText 함수를이용해 3D 텍스트를만들고렌더링하는방법 305890 2009년봄학기 5/6/2009 박경신 글꼴출력방법 내부적으로 GDI를이용. 복잡한글꼴과포맷을지원함. GDI가아닌Direct3D를이용.
More informationVANSTEENKISTE LEO DAE GD ENG UNFOLD SHADER. Introduction
VANSTEENKISTE LEO 2015 G E O M E T RY S H A D E R 2 DAE GD ENG UNFOLD SHADER Introduction Geometry shaders are a powerful tool for technical artists, but they always seem to be used for the same kind of
More informationDirectX Programming #4. Kang, Seongtae Computer Graphics, 2009 Spring
DirectX Programming #4 Kang, Seongtae Computer Graphics, 2009 Spring Programmable Shader For recent hardwares, vertex and pixel processing stage of the graphics pipeline is programmable Programmable Vertex
More informationZymkey App Utils: C++
Zymkey App Utils: C++ Generated by Doxygen 1.8.8 Tue Apr 3 2018 07:21:52 Contents 1 Intro 1 2 Hierarchical Index 5 2.1 Class Hierarchy............................................ 5 3 Class Index 7 3.1
More informationOptimisation. CS7GV3 Real-time Rendering
Optimisation CS7GV3 Real-time Rendering Introduction Talk about lower-level optimization Higher-level optimization is better algorithms Example: not using a spatial data structure vs. using one After that
More informationDirectX Programming #2. Hyunna Lee Computer Graphics, 2010 Spring
DirectX Programming #2 Hyunna Lee Computer Graphics, 2010 Spring Lights and Materials Lights and Materials } Lighting } To illuminate objects in a scene } Calculates the color of each object vertex based
More informationDirectX 11 First Elements
DirectX 11 First Elements 0. Project changes changed Dx11Base.h void Update( float dt ); void Render( ); to virtual void Update( float dt ) = 0; virtual void Render( ) = 0; new App3D.h #ifndef _APP_3D_H_
More informationHomework #2. Shading, Ray Tracing, and Texture Mapping
Computer Graphics Prof. Brian Curless CSE 457 Spring 2000 Homework #2 Shading, Ray Tracing, and Texture Mapping Prepared by: Doug Johnson, Maya Widyasari, and Brian Curless Assigned: Monday, May 8, 2000
More informationRyan Marcotte CS 499 (Honours Seminar) March 16, 2011
Ryan Marcotte www.cs.uregina.ca/~marcottr CS 499 (Honours Seminar) March 16, 2011 Outline Introduction to the problem Basic principles of skeletal animation, tag points Description of animation algorithm
More informationLive2D Cubism Native Core API Reference. Version r3 Last Update 2018/07/20
Live2D Cubism Native Core API Reference Version r3 Last Update 2018/07/20 Changelog Update day Version Update Type Content 2018/06/14 r2 translation translation to English from Japanese 2018/07/20 r3 Corrected
More information3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.
3.Constructors and Destructors Develop cpp program to implement constructor and destructor. Constructors A constructor is a special member function whose task is to initialize the objects of its class.
More informationEECE 478. Learning Objectives. Learning Objectives. Rasterization & Scenes. Rasterization. Compositing
EECE 478 Rasterization & Scenes Rasterization Learning Objectives Be able to describe the complete graphics pipeline. Describe the process of rasterization for triangles and lines. Compositing Manipulate
More informationTechnical Report. Mesh Instancing
Technical Report Mesh Instancing Abstract What is Mesh Instancing? Before we talk about instancing, let s briefly talk about the way that most D3D applications work. In order to draw a polygonal object
More informationDirectX Programming #1. Hyunna Lee Computer Graphics, 2010 Spring
DirectX Programming #1 Hyunna Lee Computer Graphics, 2010 Spring Contents } Installation and Settings } Introduction to Direct3D 9 Graphics } Initializing Direct3D } Rendering Vertices } The D3D coordinate
More informationEDAN30 Photorealistic Computer Graphics. Seminar 2, Bounding Volume Hierarchy. Magnus Andersson, PhD student
EDAN30 Photorealistic Computer Graphics Seminar 2, 2012 Bounding Volume Hierarchy Magnus Andersson, PhD student (magnusa@cs.lth.se) This seminar We want to go from hundreds of triangles to thousands (or
More informationCSE 143. Linked Lists. Linked Lists. Manipulating Nodes (1) Creating Nodes. Manipulating Nodes (3) Manipulating Nodes (2) CSE 143 1
CSE 143 Linked Lists [Chapter 4; Chapter 6, pp. 265-271] Linked Lists A linked list is a collection of dynamically allocated nodes Each node contains at least one member (field) that points to another
More informationGLSL Overview: Creating a Program
1. Create the OpenGL application GLSL Overview: Creating a Program Primarily concerned with drawing Preferred approach uses buffer objects All drawing done in terms of vertex arrays Programming style differs
More informationIndex. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309
A Arithmetic operation floating-point arithmetic, 11 12 integer numbers, 9 11 Arrays, 97 copying, 59 60 creation, 48 elements, 48 empty arrays and vectors, 57 58 executable program, 49 expressions, 48
More informationDirectX Programming #1. Kang, Seong-tae Computer Graphics, 2007 Fall
DirectX Programming #1 Kang, Seong-tae Computer Graphics, 2007 Fall Contents Installation and Settings Introduction to Direct3D 9 Graphics Initializing Direct3D Rendering Vertices The D3D coordinate system
More informationHow to Work on Next Gen Effects Now: Bridging DX10 and DX9. Guennadi Riguer ATI Technologies
How to Work on Next Gen Effects Now: Bridging DX10 and DX9 Guennadi Riguer ATI Technologies Overview New pipeline and new cool things Simulating some DX10 features in DX9 Experimental techniques Why This
More informationCS Simple Raytracer for students new to Rendering
CS 294-13 Simple Raytracer for students new to Rendering Ravi Ramamoorthi This assignment should be done only by those small number of students who have not yet written a raytracer. For those students
More informationData Storage. August 9, Indiana University. Geoffrey Brown, Bryce Himebaugh 2015 August 9, / 19
Data Storage Geoffrey Brown Bryce Himebaugh Indiana University August 9, 2016 Geoffrey Brown, Bryce Himebaugh 2015 August 9, 2016 1 / 19 Outline Bits, Bytes, Words Word Size Byte Addressable Memory Byte
More informationLecture 15 of 41. Scene Graphs: State Videos 1: CGA Shorts, Demos
Scene Graphs: State Videos 1: CGA Shorts, Demos William H. Hsu Department of Computing and Information Sciences, KSU KSOL course pages: http://bit.ly/hgvxlh / http://bit.ly/evizre Public mirror web site:
More informationTutorial 1: Your First Triangle!
Tutorial 1: Your First Triangle! Summary For your first dabble in OpenGL, you are going to create the graphics programming equivalent of Hello World - outputting a single coloured triangle. It doesn t
More informationRay Tracing CSCI 4239/5239 Advanced Computer Graphics Spring 2018
Ray Tracing CSCI 4239/5239 Advanced Computer Graphics Spring 2018 What is it? Method for rendering a scene using the concept of optical rays bouncing off objects More realistic Reflections Shadows How
More informationD3DX Concrete Types. Chapter Overview Colors
Chapter 16 D3DX Concrete Types The study of mathematics, like the Nile, begins in minuteness, but ends in magnificence. C. C. Colton: Lacon, 1820 16.1 Overview D3DX provides some concrete C ++ datatypes
More informationThe Application Stage. The Game Loop, Resource Management and Renderer Design
1 The Application Stage The Game Loop, Resource Management and Renderer Design Application Stage Responsibilities 2 Set up the rendering pipeline Resource Management 3D meshes Textures etc. Prepare data
More informationA method in creating 3D models: From shape to shape, from shapes to model (October 2016)
A method in creating 3D models: From shape to shape, from shapes to model (October 2016) M. Sinan Serbetcioglu, BS* Abstract In this paper, we try to create 3D models by using some geometrical primitives.
More informationTDA361/DIT220 Computer Graphics, January 15 th 2016
TDA361/DIT220 Computer Graphics, January 15 th 2016 EXAM (Same exam for both CTH- and GU students) Friday January 15 th, 2016, 8.30 12.30 Examiner Ulf Assarsson, tel. 0701-738535 Permitted Technical Aids
More informationHomework #2 and #3 Due Friday, October 12 th and Friday, October 19 th
Homework #2 and #3 Due Friday, October 12 th and Friday, October 19 th 1. a. Show that the following sequences commute: i. A rotation and a uniform scaling ii. Two rotations about the same axis iii. Two
More informationCS451Real-time Rendering Pipeline
1 CS451Real-time Rendering Pipeline JYH-MING LIEN DEPARTMENT OF COMPUTER SCIENCE GEORGE MASON UNIVERSITY Based on Tomas Akenine-Möller s lecture note You say that you render a 3D 2 scene, but what does
More informationCS 184: Assignment 4 Simple Raytracer
CS 184: Assignment 4 Simple Raytracer Ravi Ramamoorthi 1 Introduction This assignment asks you to write a first simple raytracer. Raytracers can produce some of the most impressive renderings, with high
More informationNothing is ever said that has not been said before. Terence: Eunuchus, prologue, c. 160 B.C.
Chapter 15 D3DX Utility Library Nothing is ever said that has not been said before. Terence: Eunuchus, prologue, c. 160 B.C. 15.1 Overview D3DX is a static library designed for production use in shipping
More informationLecture 25 of 41. Spatial Sorting: Binary Space Partitioning Quadtrees & Octrees
Spatial Sorting: Binary Space Partitioning Quadtrees & Octrees William H. Hsu Department of Computing and Information Sciences, KSU KSOL course pages: http://bit.ly/hgvxlh / http://bit.ly/evizre Public
More informationMODELING AND HIERARCHY
MODELING AND HIERARCHY Introduction Models are abstractions of the world both of the real world in which we live and of virtual worlds that we create with computers. We are all familiar with mathematical
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationFinal Exam. 11 May 2018, 120 minutes, 26 questions, 100 points
Name: CS520 Final Exam 11 May 2018, 120 minutes, 26 questions, 100 points The exam is closed book and notes. Please keep all electronic devices turned off and out of reach. Note that a question may require
More informationCSE 167: Introduction to Computer Graphics Lecture #19: Wrapping Up. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2017
CSE 167: Introduction to Computer Graphics Lecture #19: Wrapping Up Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2017 Announcements TA evaluations CAPE Final project blog entries
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationFrom Art to Engine with Model I/O
Session Graphics and Games #WWDC17 From Art to Engine with Model I/O 610 Nick Porcino, Game Technologies Engineer Nicholas Blasingame, Game Technologies Engineer 2017 Apple Inc. All rights reserved. Redistribution
More informationDemo problem: Upgrading a GeomObject to a GeneralisedElement -- how to parametrise unknown domain boundaries
Chapter 1 Demo problem: Upgrading a GeomObject to a GeneralisedElement -- how to parametrise unknown domain boundaries In many previous examples we demonstrated how to use GeomObjects to parametrise curvilinear,
More informationCS 4620 Midterm, March 21, 2017
CS 460 Midterm, March 1, 017 This 90-minute exam has 4 questions worth a total of 100 points. Use the back of the pages if you need more space. Academic Integrity is expected of all students of Cornell
More informationIntegrating Physics into a Modern Game Engine. Object Collision. Various types of collision for an object:
Integrating Physics into a Modern Game Engine Object Collision Various types of collision for an object: Sphere Bounding box Convex hull based on rendered model List of convex hull(s) based on special
More informationVertex Shaders for Geometry Compression
Vertex Shaders for Geometry Compression by Kenneth Hurley GDC San Francisco March 5 th, 2007 You might be an engineer if The sales people at the local computer store can't answer any of your questions.
More informationLecture 18 of 41. Scene Graphs: Rendering Lab 3b: Shader
Scene Graphs: Rendering Lab 3b: Shader William H. Hsu Department of Computing and Information Sciences, KSU KSOL course pages: http://bit.ly/hgvxlh / http://bit.ly/evizre Public mirror web site: http://www.kddresearch.org/courses/cis636
More informationCS 4620 Program 3: Pipeline
CS 4620 Program 3: Pipeline out: Wednesday 14 October 2009 due: Friday 30 October 2009 1 Introduction In this assignment, you will implement several types of shading in a simple software graphics pipeline.
More informationA506 / C201 Computer Programming II Placement Exam Sample Questions. For each of the following, choose the most appropriate answer (2pts each).
A506 / C201 Computer Programming II Placement Exam Sample Questions For each of the following, choose the most appropriate answer (2pts each). 1. Which of the following functions is causing a temporary
More informationThe Mesh Class. Lecture 23. Robb T. Koether. Hampden-Sydney College. Wed, Oct 18, 2017
The Mesh Class Lecture 23 Robb T. Koether Hampden-Sydney College Wed, Oct 18, 2017 Robb T. Koether (Hampden-Sydney College) The Mesh Class Wed, Oct 18, 2017 1 / 21 Outline 1 The Mesh Class 2 Assignment
More informationAdaptive Point Cloud Rendering
1 Adaptive Point Cloud Rendering Project Plan Final Group: May13-11 Christopher Jeffers Eric Jensen Joel Rausch Client: Siemens PLM Software Client Contact: Michael Carter Adviser: Simanta Mitra 4/29/13
More informationMetal. GPU-accelerated advanced 3D graphics rendering and data-parallel computation. source rebelsmarket.com
Metal GPU-accelerated advanced 3D graphics rendering and data-parallel computation source rebelsmarket.com Maths The heart and foundation of computer graphics source wallpoper.com Metalmatics There are
More informationContent Loader Introduction
Content Loader Introduction by G.Paskaleva Vienna University of Technology Model Formats Quake II / III (md2 / md3, md4) Doom 3 (md5) FBX Ogre XML Collada (dae) Wavefront (obj) 1 Must-Have Geometry Information
More informationFunctions in C C Programming and Software Tools
Functions in C C Programming and Software Tools N.C. State Department of Computer Science Functions in C Functions are also called subroutines or procedures One part of a program calls (or invokes the
More informationHierarchical Modeling and scene graphs
Hierarchical Modeling and scene graphs Overview Examine the limitations of linear modeling Introduce hierarchical models Introduce Tree and DAG models Build a tree-structured model of a humanoid figure
More informationCSE 333 Midterm Exam 5/10/13
Name There are 5 questions worth a total of 100 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. The exam is closed book, closed notes, closed
More informationTDA362/DIT223 Computer Graphics EXAM (Same exam for both CTH- and GU students)
TDA362/DIT223 Computer Graphics EXAM (Same exam for both CTH- and GU students) Saturday, January 13 th, 2018, 08:30-12:30 Examiner Ulf Assarsson, tel. 031-772 1775 Permitted Technical Aids None, except
More information3D Graphics for Game Programming (J. Han) Chapter II Vertex Processing
Chapter II Vertex Processing Rendering Pipeline Main stages in the pipeline The vertex processing stage operates on every input vertex stored in the vertex buffer and performs various operations such as
More information3D Modeling. 3D Modeling 1
3D Modeling 3D Modeling 1 Virtual enviroments can be populated with "models" as well as regular geometries (glut shapes, glu quadrics, gl primitives). Models are: collections of primitives often in a display
More informationC++ Addendum: Inheritance of Special Member Functions. Constructors Destructor Construction and Destruction Order Assignment Operator
C++ Addendum: Inheritance of Special Member Functions Constructors Destructor Construction and Destruction Order Assignment Operator What s s Not Inherited? The following methods are not inherited: Constructors
More informationAn overview of how to write your function and fill out the FUNCTIONINFO structure. Allocating and freeing memory.
Creating a User DLL Extend Mathcad Professional's power by writing your own customized functions. Your functions will have the same advanced features as Mathcad built-in functions, such as customized error
More information3D Studio Max Lesson 1.1: A Basic Overview of 3DSMax's Main Tool Bar
3D Studio Max Lesson 1.1: A Basic Overview of 3DSMax's Main Tool Bar Introduction In this tutorial, we'll just be taking a look at parts of the environment of 3D Studio Max version 4.26, and helping you
More informationConvex Hull Generation with Quick Hull. Randy Gaul Special thanks to Stan Melax and Dirk Gregorius for contributions on this topic
Convex Hull Generation with Quick Hull Randy Gaul Special thanks to Stan Melax and Dirk Gregorius for contributions on this topic Overview Quick Hull (QHull) Convex Hulls Why use them Computing a Convex
More informationheman Documentation Release r1 Philip Rideout
heman Documentation Release r1 Philip Rideout August 17, 2015 Contents 1 Why the name heman? 3 2 Source code 5 3 Documentation 7 3.1 Heman Overview............................................. 7 3.2 Heman
More informationHomework #2. Shading, Projections, Texture Mapping, Ray Tracing, and Bezier Curves
Computer Graphics Instructor: Brian Curless CSEP 557 Autumn 2016 Homework #2 Shading, Projections, Texture Mapping, Ray Tracing, and Bezier Curves Assigned: Wednesday, Nov 16 th Due: Wednesday, Nov 30
More informationCS 352: Computer Graphics. Hierarchical Graphics, Modeling, And Animation
CS 352: Computer Graphics Hierarchical Graphics, Modeling, And Animation Chapter 9-2 Overview Modeling Animation Data structures for interactive graphics CSG-tree BSP-tree Quadtrees and Octrees Visibility
More informationGeometry Shader - Silhouette edge rendering
Geometry Shader - Silhouette edge rendering Introduction This paper will describe the process of making an outline shader, using the Geometry Shader. The shader is designed for DirectX10 applications (and
More informationChapter 24. A DirectX 5 Update
Chapter 24 I A DirectX 5 Update Why Read This Chapter? Time waits for no person. While we were putting our book together, Microsoft was working on the next generation of DirectX DirectX foundation 5. In
More informationCS240: Programming in C
CS240: Programming in C Lecture 11: Bit fields, unions, pointers to functions Cristina Nita-Rotaru Lecture 11/ Fall 2013 1 Structures recap Holds multiple items as a unit Treated as scalar in C: can be
More informationSign up for crits! Announcments
Sign up for crits! Announcments Reading for Next Week FvD 16.1-16.3 local lighting models GL 5 lighting GL 9 (skim) texture mapping Modern Game Techniques CS248 Lecture Nov 13 Andrew Adams Overview The
More informationIntroductory Seminar
EDAF80 Introduction to Computer Graphics Introductory Seminar OpenGL & C++ Michael Doggett 2017 C++ slides by Carl Johan Gribel, 2010-13 Today Lab info OpenGL C(++)rash course Labs overview 5 mandatory
More informationSFU CMPT 361 Computer Graphics Fall 2017 Assignment 2. Assignment due Thursday, October 19, 11:59pm
SFU CMPT 361 Computer Graphics Fall 2017 Assignment 2 Assignment due Thursday, October 19, 11:59pm For this assignment, you are to interpret a 3D graphics specification language, along with doing some
More informationComputer Graphics Ray Casting. Matthias Teschner
Computer Graphics Ray Casting Matthias Teschner Outline Context Implicit surfaces Parametric surfaces Combined objects Triangles Axis-aligned boxes Iso-surfaces in grids Summary University of Freiburg
More informationCMSC427 Advanced shading getting global illumination by local methods. Credit: slides Prof. Zwicker
CMSC427 Advanced shading getting global illumination by local methods Credit: slides Prof. Zwicker Topics Shadows Environment maps Reflection mapping Irradiance environment maps Ambient occlusion Reflection
More informationCS 465 Program 5: Ray II
CS 465 Program 5: Ray II out: Friday 2 November 2007 due: Saturday 1 December 2007 Sunday 2 December 2007 midnight 1 Introduction In the first ray tracing assignment you built a simple ray tracer that
More informationCloth Simulation on the GPU. Cyril Zeller NVIDIA Corporation
Cloth Simulation on the GPU Cyril Zeller NVIDIA Corporation Overview A method to simulate cloth on any GPU supporting Shader Model 3 (Quadro FX 4500, 4400, 3400, 1400, 540, GeForce 6 and above) Takes advantage
More informationChapter 3. Texture mapping. Learning Goals: Assignment Lab 3: Implement a single program, which fulfills the requirements:
Chapter 3 Texture mapping Learning Goals: 1. To understand texture mapping mechanisms in VRT 2. To import external textures and to create new textures 3. To manipulate and interact with textures 4. To
More informationTutorial 12: Real-Time Lighting B
Tutorial 12: Real-Time Lighting B Summary The last tutorial taught you the basics of real time lighting, including using the normal of a surface to calculate the diffusion and specularity. Surfaces are
More informationCSCI E-74. Simulation and Gaming
CSCI E-74 Virtual and Augmented Reality for Simulation and Gaming Fall term 2017 Gianluca De Novi, PhD Lesson 6 Basic Texturing Data Structures in a 3D Engine Vertices/Vectors Segments Matrices Polygons
More informationSeminar: Assignment 1. Magnus Andersson
Seminar: Assignment 1 Magnus Andersson (magnusa@cs.lth.se) This seminar A lot of ground to cover... Assignment C++ crash course RenderChimp Assignment 1 1. Getting started 2. Building a Scene Graph 3.
More informationIntroduction to the Maya C++ API. Tuesday, 17 April 12
Introduction to the Maya C++ API API Basics Maya has both a python and a C++ API In most cases either can be used to accomplish tasks For this lecture we will look at the C++ API There are a series of
More informationCSE 333 Midterm Exam Sample Solution 5/10/13
Question 1. (18 points) Consider these two C files: a.c void f(int p); int main() { f(17); return 0; b.c void f(char *p) { *p = 'x'; (a) Why is the program made from a.c and b.c incorrect? What would you
More informationSri Vidya College of Engineering & Technology
UNIT I INTRODUCTION TO OOP AND FUNDAMENTALS OF JAVA 1. Define OOP. Part A Object-Oriented Programming (OOP) is a methodology or paradigm to design a program using classes and objects. It simplifies the
More informationOBJECT ORIENTED PROGRAMMING
OBJECT ORIENTED PROGRAMMING OBJECT ORIENTED PROGRAMMING Design principles for organizing code into user-defined types Principles include: Encapsulation Inheritance Polymorphism http://en.wikipedia.org/wiki/encapsulation_(object-oriented_programming)
More informationCall DLL from Limnor Applications
Call DLL from Limnor Applications There is a lot of computer software in the format of dynamic link libraries (DLL). DLLCaller performer allows your applications to call DLL functions directly. Here we
More informationPrimitives - Box & Cylinder
Box Box() Primitives - Box & Cylinder Constructs a default box 2.0 metres in height, width, and depth, centred at the origin Box(float xdim, float ydim, float zdim, Appearance app) Constructs a box of
More informationUsing Bounding Volume Hierarchies Efficient Collision Detection for Several Hundreds of Objects
Part 7: Collision Detection Virtuelle Realität Wintersemester 2007/08 Prof. Bernhard Jung Overview Bounding Volumes Separating Axis Theorem Using Bounding Volume Hierarchies Efficient Collision Detection
More informationPer-Face Texture Mapping for Realtime Rendering. Realtime Ptex
Per-Face Texture Mapping for Realtime Rendering Realtime Ptex Quick Note For CUDA/Compute folks: Ptex!= PTX Goals Render native Ptex datasets in real-time on commodity hardware Remove texture seams from
More informationPOINTERS - Pointer is a variable that holds a memory address of another variable of same type. - It supports dynamic allocation routines. - It can improve the efficiency of certain routines. C++ Memory
More informationReal Time Rendering of Complex Height Maps Walking an infinite realistic landscape By: Jeffrey Riaboy Written 9/7/03
1 Real Time Rendering of Complex Height Maps Walking an infinite realistic landscape By: Jeffrey Riaboy Written 9/7/03 Table of Contents 1 I. Overview 2 II. Creation of the landscape using fractals 3 A.
More informationCOMP6771 Advanced C++ Programming
1 COMP6771 Advanced C++ Programming Week 11 Object Oriented Programming 2016 www.cse.unsw.edu.au/ cs6771 2 Covariants and Contravariants Let us assume that Class B is a subtype of class A. Covariants:
More informationTutorial: Accessing Maya tools
Tutorial: Accessing Maya tools This tutorial walks you through the steps needed to access the Maya Lumberyard Tools for exporting art assets from Maya to Lumberyard. At the end of the tutorial, you will
More informationAdvanced Visual Effects with Direct3D
Advanced Visual Effects with Direct3D Presenters: Cem Cebenoyan, Sim Dietrich, Richard Huddy, Greg James, Jason Mitchell, Ashu Rege, Guennadi Riguer, Alex Vlachos and Matthias Wloka Today s Agenda DirectX
More informationObject Oriented Programming in C#
Introduction to Object Oriented Programming in C# Class and Object 1 You will be able to: Objectives 1. Write a simple class definition in C#. 2. Control access to the methods and data in a class. 3. Create
More informationRSX Best Practices. Mark Cerny, Cerny Games David Simpson, Naughty Dog Jon Olick, Naughty Dog
RSX Best Practices Mark Cerny, Cerny Games David Simpson, Naughty Dog Jon Olick, Naughty Dog RSX Best Practices About libgcm Using the SPUs with the RSX Brief overview of GCM Replay December 7 th, 2004
More information