36
Advanced Computer Graphics Global Illumination - OptiX Ming-Te Chi Department of Computer Science, National Chengchi University

Advanced Computer Graphics Global Illumination - OptiX

  • Upload
    judd

  • View
    67

  • Download
    1

Embed Size (px)

DESCRIPTION

Advanced Computer Graphics Global Illumination - OptiX. Ming-Te Chi Department of Computer Science,  National Chengchi University. Outline. CUDA OptiX. CPU vs GPU. OpenMP. #include < omp.h > # include < stdio.h > # include < stdlib.h > void Test( int n ) { - PowerPoint PPT Presentation

Citation preview

Page 1: Advanced Computer Graphics Global Illumination  -  OptiX

Advanced Computer Graphics

Global Illumination - OptiX

Ming-Te Chi

Department of Computer Science, 

National Chengchi University

Page 2: Advanced Computer Graphics Global Illumination  -  OptiX

Outline

• CUDA

• OptiX

2

Page 3: Advanced Computer Graphics Global Illumination  -  OptiX

CPU vs GPU

Page 4: Advanced Computer Graphics Global Illumination  -  OptiX

OpenMP#include <omp.h> #include <stdio.h> #include <stdlib.h> void Test( int n ) {

for( int i = 0; i < 10000; ++i ) { //do nothing, just waste time } printf( "%d, ", n );

} int main(int argc, char* argv[]) {

#pragma omp parallel for for( int i = 0; i < 10; ++ i )

Test( i ); system( "pause" );

}

Page 5: Advanced Computer Graphics Global Illumination  -  OptiX

CUDA - Kernels and Thread

Page 6: Advanced Computer Graphics Global Illumination  -  OptiX

NVCC

• cu: c language with extension• PTX: binary in CUDA instruction set

architecture. (virtual assemble language)

• nvcc: nVidia Cuda Compiler: – Compile cu into PTX

Page 7: Advanced Computer Graphics Global Illumination  -  OptiX

CPU to GPU

Page 8: Advanced Computer Graphics Global Illumination  -  OptiX

Memory Hierarchy Execution flow

Page 9: Advanced Computer Graphics Global Illumination  -  OptiX

OPTIX

Page 10: Advanced Computer Graphics Global Illumination  -  OptiX

Document

OptiX: A scalable framework for ray-tracing based application.

• OptiX Programming Guide– Host-based API – CUDA c-based system that produce ray, intersection, …

• OptiX Quickstart Guide– How to implement several basic ray tracing effects, from

trivially simple to moderately complex.

Page 11: Advanced Computer Graphics Global Illumination  -  OptiX

Object model

• Context

• Program

• Variable• Buffer• Texture sampler

• Geometry Instance– Geometry– Material

• Group– Geometry Group– Transform– Selector

• Transform• Acceleration

Page 12: Advanced Computer Graphics Global Illumination  -  OptiX

Node graph

Page 13: Advanced Computer Graphics Global Illumination  -  OptiX

Host - Context

Page 14: Advanced Computer Graphics Global Illumination  -  OptiX

Host – entry points

Page 15: Advanced Computer Graphics Global Illumination  -  OptiX

Programs - Ray Type

Page 16: Advanced Computer Graphics Global Illumination  -  OptiX

Radiance

Page 17: Advanced Computer Graphics Global Illumination  -  OptiX

Shadow ray

Page 18: Advanced Computer Graphics Global Illumination  -  OptiX

Geometry Instance

• Geometry Instance– Geometry• IntersectionProgram• BoundingBoxProgram

– Material• ClosestHitProgram• AnyHitProgram

Page 19: Advanced Computer Graphics Global Illumination  -  OptiX

Programs

• Ray Generation– camera

• Closest Hit– shading

• Any Hit– Shadow ray

• Miss– background/environment

• Exception– Bad pixel / Print error

• Intersection– ray-primitive

• Bounding Box– Ray-bounding box

• Visit

Page 20: Advanced Computer Graphics Global Illumination  -  OptiX

Programs – Ray Generation(1)

Page 21: Advanced Computer Graphics Global Illumination  -  OptiX

Programs – Ray Generation(2)

Page 22: Advanced Computer Graphics Global Illumination  -  OptiX

Programs – bounding box

Page 23: Advanced Computer Graphics Global Illumination  -  OptiX

Programs – Intersection

Page 24: Advanced Computer Graphics Global Illumination  -  OptiX

Programs – Closest Hit

Page 25: Advanced Computer Graphics Global Illumination  -  OptiX

Programs – Miss

Page 26: Advanced Computer Graphics Global Illumination  -  OptiX

Supported OptiX call

Page 27: Advanced Computer Graphics Global Illumination  -  OptiX

sample

• Sample 1~8

• Whitted, Cook, glass, Tutorial

Page 28: Advanced Computer Graphics Global Illumination  -  OptiX

Host - SampleScene.h

class SampleScene { // Create the optix scene and return initial viewing parametersvirtual void initScene( InitialCameraData& camera_data )=0; // Update camera shader with new viewing params and then tracevirtual void trace( const RayGenCameraData& camera_data )=0; // Return the output buffer to be displayedvirtual optix::Buffer getOutputBuffer()=0;

// Optional virtual interfacevirtual void cleanUp();virtual void resize(unsigned int width, unsigned int height);virtual bool keyPressed(unsigned char key, int x, int y)

}

Page 29: Advanced Computer Graphics Global Illumination  -  OptiX

void Tutorial::trace( const RayGenCameraData& camera_data ){ m_context["eye"]->setFloat( camera_data.eye ); m_context["U"]->setFloat( camera_data.U ); m_context["V"]->setFloat( camera_data.V ); m_context["W"]->setFloat( camera_data.W );

Buffer buffer = m_context["output_buffer"]->getBuffer(); RTsize buffer_width, buffer_height; buffer->getSize( buffer_width, buffer_height );

m_context->launch( 0, static_cast<unsigned int>(buffer_width), static_cast<unsigned int>(buffer_height) );}

Page 30: Advanced Computer Graphics Global Illumination  -  OptiX

Intersection()rtTrace()

Tutorial 0 – Normal shader

Page 31: Advanced Computer Graphics Global Illumination  -  OptiX
Page 32: Advanced Computer Graphics Global Illumination  -  OptiX

Tutorial 1 – Diffuse shader

Page 33: Advanced Computer Graphics Global Illumination  -  OptiX

Ray.origin

hit_point

L

Lightffnormal

Page 34: Advanced Computer Graphics Global Illumination  -  OptiX

Tutorial 2 – Phong Highlight

• Half vectorRay.origin

hit_point

L

Lightffnormal

Page 35: Advanced Computer Graphics Global Illumination  -  OptiX

Tutorial 3 - Shadows

Page 36: Advanced Computer Graphics Global Illumination  -  OptiX

Ray.origin

hit_point

L

Lightffnormal