Meshes. 9 th Week, To gain an understanding of the internal data organization of an ID3DXMesh object

Size: px
Start display at page:

Download "Meshes. 9 th Week, To gain an understanding of the internal data organization of an ID3DXMesh object"

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

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 information

Meshes. Meshes what are they? How to use them? Progressive Meshes? Doron Nussbaum COMP Meshes 1. Doron Nussbaum COMP Meshes 2

Meshes. 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 information

D3DX Mesh Objects. Chapter Overview

D3DX 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 information

Shaders Part II. Traditional Rendering Pipeline

Shaders 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 ( =) >

! !#$!%!&% ' ( )) * ) )+( ( ))+ ))(, ) ( - +,./ )) ) ) $( -( 1), , ) ( -)) ') 5 ' +) 67 4 ) ' 8, ( ) ( 9 :! ; $) ) ; 5<4,4$6 ( =) > !" "!#$!"%!&% ' ( )) * ) )+( ( ))+ ))(, ) ( - +,./ )) ) ) ( ))) 0 $( -( 1),2, ) ( -))+- 3 4 ') 5 ' +) 67 4 ) ' 8, ( ) ( 9 :! ; $) ) ; 5 " + ) &)) >( ))( -*( /( *( 1 =?/+) *( : == ) + /))(

More information

The Effects Framework. October 31, Composed of the following components:

The 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 information

Programming With D3DX. Anuj Gosalia Development Lead DirectX Graphics Microsoft Corporation

Programming 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 information

Font. Overview. ID3DXFont. ID3DXFont. ID3DXFont 인터페이스를이용해텍스트를렌더링하는방법

Font. Overview. ID3DXFont. ID3DXFont. ID3DXFont 인터페이스를이용해텍스트를렌더링하는방법 Overview Font 인터페이스를이용해텍스트를렌더링하는방법 클래스를이용해텍스트를렌더링하는방법 초당렌더링되는프레임수 (fps) 를계산하는방법 D3DXCreateText 함수를이용해 3D 텍스트를만들고렌더링하는방법 305890 2009년봄학기 5/6/2009 박경신 글꼴출력방법 내부적으로 GDI를이용. 복잡한글꼴과포맷을지원함. GDI가아닌Direct3D를이용.

More information

VANSTEENKISTE LEO DAE GD ENG UNFOLD SHADER. Introduction

VANSTEENKISTE 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 information

DirectX Programming #4. Kang, Seongtae Computer Graphics, 2009 Spring

DirectX 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 information

Zymkey App Utils: C++

Zymkey 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 information

Optimisation. CS7GV3 Real-time Rendering

Optimisation. 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 information

DirectX Programming #2. Hyunna Lee Computer Graphics, 2010 Spring

DirectX 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 information

DirectX 11 First Elements

DirectX 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 information

Homework #2. Shading, Ray Tracing, and Texture Mapping

Homework #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 information

Ryan Marcotte CS 499 (Honours Seminar) March 16, 2011

Ryan 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 information

Live2D 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 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 information

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.

3.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 information

EECE 478. Learning Objectives. Learning Objectives. Rasterization & Scenes. Rasterization. Compositing

EECE 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 information

Technical Report. Mesh Instancing

Technical 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 information

DirectX Programming #1. Hyunna Lee Computer Graphics, 2010 Spring

DirectX 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 information

EDAN30 Photorealistic Computer Graphics. Seminar 2, Bounding Volume Hierarchy. Magnus Andersson, PhD student

EDAN30 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 information

CSE 143. Linked Lists. Linked Lists. Manipulating Nodes (1) Creating Nodes. Manipulating Nodes (3) Manipulating Nodes (2) CSE 143 1

CSE 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 information

GLSL Overview: Creating a Program

GLSL 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 information

Index. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309

Index. 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 information

DirectX Programming #1. Kang, Seong-tae Computer Graphics, 2007 Fall

DirectX 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 information

How 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 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 information

CS Simple Raytracer for students new to Rendering

CS 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 information

Data Storage. August 9, Indiana University. Geoffrey Brown, Bryce Himebaugh 2015 August 9, / 19

Data 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 information

Lecture 15 of 41. Scene Graphs: State Videos 1: CGA Shorts, Demos

Lecture 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 information

Tutorial 1: Your First Triangle!

Tutorial 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 information

Ray Tracing CSCI 4239/5239 Advanced Computer Graphics Spring 2018

Ray 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 information

D3DX Concrete Types. Chapter Overview Colors

D3DX 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 information

The Application Stage. The Game Loop, Resource Management and Renderer Design

The 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 information

A 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) 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 information

TDA361/DIT220 Computer Graphics, January 15 th 2016

TDA361/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 information

Homework #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 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 information

CS451Real-time Rendering Pipeline

CS451Real-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 information

CS 184: Assignment 4 Simple Raytracer

CS 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 information

Nothing is ever said that has not been said before. Terence: Eunuchus, prologue, c. 160 B.C.

Nothing 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 information

Lecture 25 of 41. Spatial Sorting: Binary Space Partitioning Quadtrees & Octrees

Lecture 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 information

MODELING AND HIERARCHY

MODELING 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 information

Short Notes of CS201

Short 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 information

Final Exam. 11 May 2018, 120 minutes, 26 questions, 100 points

Final 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 information

CSE 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 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 information

CS201 - Introduction to Programming Glossary By

CS201 - 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 information

From Art to Engine with Model I/O

From 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 information

Demo problem: Upgrading a GeomObject to a GeneralisedElement -- how to parametrise unknown domain boundaries

Demo 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 information

CS 4620 Midterm, March 21, 2017

CS 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 information

Integrating 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: 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 information

Vertex Shaders for Geometry Compression

Vertex 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 information

Lecture 18 of 41. Scene Graphs: Rendering Lab 3b: Shader

Lecture 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 information

CS 4620 Program 3: Pipeline

CS 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 information

A506 / 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). 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 information

The 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 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 information

Adaptive Point Cloud Rendering

Adaptive 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 information

Metal. 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 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 information

Content Loader Introduction

Content 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 information

Functions in C C Programming and Software Tools

Functions 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 information

Hierarchical Modeling and scene graphs

Hierarchical 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 information

CSE 333 Midterm Exam 5/10/13

CSE 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 information

TDA362/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) 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 information

3D Graphics for Game Programming (J. Han) Chapter II Vertex Processing

3D 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 information

3D Modeling. 3D Modeling 1

3D 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 information

C++ 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 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 information

An overview of how to write your function and fill out the FUNCTIONINFO structure. Allocating and freeing memory.

An 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 information

3D 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 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 information

Convex 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 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 information

heman Documentation Release r1 Philip Rideout

heman 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 information

Homework #2. Shading, Projections, Texture Mapping, Ray Tracing, and Bezier Curves

Homework #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 information

CS 352: Computer Graphics. Hierarchical Graphics, Modeling, And Animation

CS 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 information

Geometry Shader - Silhouette edge rendering

Geometry 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 information

Chapter 24. A DirectX 5 Update

Chapter 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 information

CS240: Programming in C

CS240: 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 information

Sign up for crits! Announcments

Sign 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 information

Introductory Seminar

Introductory 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 information

SFU 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 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 information

Computer Graphics Ray Casting. Matthias Teschner

Computer 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 information

CMSC427 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 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 information

CS 465 Program 5: Ray II

CS 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 information

Cloth Simulation on the GPU. Cyril Zeller NVIDIA Corporation

Cloth 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 information

Chapter 3. Texture mapping. Learning Goals: Assignment Lab 3: Implement a single program, which fulfills the requirements:

Chapter 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 information

Tutorial 12: Real-Time Lighting B

Tutorial 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 information

CSCI E-74. Simulation and Gaming

CSCI 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 information

Seminar: Assignment 1. Magnus Andersson

Seminar: 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 information

Introduction to the Maya C++ API. Tuesday, 17 April 12

Introduction 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 information

CSE 333 Midterm Exam Sample Solution 5/10/13

CSE 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 information

Sri Vidya College of Engineering & Technology

Sri 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 information

OBJECT ORIENTED PROGRAMMING

OBJECT 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 information

Call DLL from Limnor Applications

Call 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 information

Primitives - Box & Cylinder

Primitives - 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 information

Using Bounding Volume Hierarchies Efficient Collision Detection for Several Hundreds of Objects

Using 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 information

Per-Face Texture Mapping for Realtime Rendering. Realtime Ptex

Per-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 information

POINTERS - 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 information

Real Time Rendering of Complex Height Maps Walking an infinite realistic landscape By: Jeffrey Riaboy Written 9/7/03

Real 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 information

COMP6771 Advanced C++ Programming

COMP6771 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 information

Tutorial: Accessing Maya tools

Tutorial: 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 information

Advanced Visual Effects with Direct3D

Advanced 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 information

Object Oriented Programming in C#

Object 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 information

RSX 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 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