[2016 gdc] multiplatform gpu ray-tracing solutions with firerender and firerays
TRANSCRIPT
![Page 1: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/1.jpg)
1" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
TAKAHIRO"HARADA,"DMITRY"KOZLOV"3/16/2016"
MULTIPLATFORM+GPU+RAY.TRACING+SOLUTIONS+WITH+FIRERENDER+AND+FIRERAYS+
![Page 2: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/2.jpg)
2" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! FireRender"‒ All"in"package"(ray"casKng,"shading)"‒ For"renderer"users"‒ Output"Q"Rendered"image"‒ Physically"based"rendering"library"
! FireRays"‒ For"renderer"developers"‒ Output"Q"IntersecKons"‒ Ray"intersecKon"library"
! Implemented"using"OpenCL"
MULTIPLATFORM"GPU"RAYQTRACING"SOLUTIONS"
![Page 3: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/3.jpg)
3" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! FireRender"‒ Features"‒ Architecture"‒ Examples"
! FireRays"‒ IntroducKon"‒ Technology"‒ Examples"
AGENDA"
![Page 4: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/4.jpg)
4" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
FIRERENDER+
![Page 5: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/5.jpg)
5" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! “Fast"high"quality"rendering"everywhere”"""""""""GPU""""""""Path"tracing"""""""""""""OpenCL"
! C"API"! OpenCL"1.2"! MulK"pla`orm"soluKon"
‒ OS"(Windows,"Linux)"‒ Vendor"(AMD,…)"
FIRERENDER"
![Page 6: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/6.jpg)
6" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
FEATURES"
! Camera"
MoKon"Blur"DOF" Bokeh"
! Geometry"
Instancing"Mesh" Subdivision"
! Lights"
Area"IES"Spot"Point"
![Page 7: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/7.jpg)
7" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
FEATURES"MATERIALS"
! BSDFs"! Basic"components"
Diffuse"reflecKon"
! Shader"graph"! Arbitrary"connecKon"of"shader"nodes"for"flexible"shading"system"
Diffuse"refracKon" Glossy"reflecKon" Glossy"refracKon" Spec."reflecKon" Spec."refracKon" SSS"
Input"Lookup" ArithmeKc" Example" Example" Example"Procedural" Blend"BSDFs""
![Page 8: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/8.jpg)
8" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
HOW"FIRERENDER"IS"BUILT"FIRERENDER+ARCHITECTURE+
![Page 9: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/9.jpg)
9" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
ARCHITECTURE"OVERVIEW"
! Input:"scene"info"! Output:"rendered"image"
! Runs"on""‒ Single"GPU"‒ MulKple"GPUs"‒ CPUs"‒ Mix"of"these"
CPU+
OpenCL+
FireRender+Core+
User+
Geometry,"material,"light" Rendered"image"
FireRender+API+
GPU+#2+GPU+#1+
![Page 10: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/10.jpg)
10" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
FIRERENDER+CORE+
![Page 11: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/11.jpg)
11" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! Split"kernel"implementaKon"‒ Modular"
‒ Easy"to"modify,"extend,"debug"‒ Change"behavior"by"replacing"a"kernel"
‒ Ray"casKng"kernel"=>"FireRays,"Vector"displacement,"Out"of"core"support"‒ Camera"=>"Bake"camera"
‒ High"GPU"uKlizaKon"‒ Less"GPR"usage"‒ Bener"performance"
IMPLEMENTATION"
![Page 12: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/12.jpg)
12" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! Textures"‒ Manually"managed"‒ No"limit"to"the"number"of"textures"(up"to"the"memory"limit)"
! Lights"‒ Many"lights"are"challenging"
‒ Slow"convergence"‒ OpKmized"for"many"lights"
‒ GPU"opKmized"stochasKc"light"culling"
IMPLEMENTATION"
6,000"area"lights"
![Page 13: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/13.jpg)
13" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
IMPLEMENTATION"MATERIAL"SYSTEM"
! Material"=="shader"graph"‒ Arbitrary"node"connecKon"‒ BSDFs"(Closures),"textures,"arithmeKc"operaKon"
! For"each"shading"point"‒ Traverse"the"graph"
=>"BSDF"+"Parameters"‒ Evaluate"BSDF"‒ Sample"using"BSDF"
![Page 14: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/14.jpg)
14" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! Make"single"frame"render"faster"! Screen"split"! Support"heterogeneous"GPUs"! Load"balancing"
‒ Minimize"the"idle"Kme"on"GPU"
IMPLEMENTATION"MULTI"GPU"SUPPORT"
7"GPUs"
![Page 15: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/15.jpg)
15" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
HOW"TO"USE"FIRERENDER"FIRERENDER+API+
![Page 16: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/16.jpg)
16" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
Initialization
FIRERENDER"API"EXAMPLE"(1/4)"SIMPLE"RENDER"
Camera Set up
// Create OpenCL context using a single GPU
fr_context context;
fr_material_system matsys;
fr_scene scene;
frCreateContext(FR_API_VERSION, FR_CONTEXT_OPENCL, FR_CREATION_FLAGS_ENABLE_GPU0, NULL, NULL, &context);
frContextCreateMaterialSystem(context, 0, &matsys);
frContextCreateScene(context, &scene);
frContextSetScene(context, scene);
// Create camera
fr_camera camera;
frContextCreateCamera(context, &camera);
frCameraLookAt(camera, 5, 5, 20, 0, 0, 0, 0, 1, 0);
frCameraSetFocalLength(camera, 75.f);
frSceneSetCamera(scene, camera);
![Page 17: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/17.jpg)
17" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
// Create point light
fr_light light;
frContextCreatePointLight(context, &light);
frLightSetTransform(light, FR_TRUE, &lightm(0,0));
frPointLightSetRadiantPower3f(light, 255, 241, 224);
frSceneAttachLight(scene, light);
// Create plane mesh
fr_shape plane;
frContextCreateMesh(context,...);
frSceneAttachShape(scene, plane);
// Create simple diffuse shader
fr_material_node diffuse;
frMaterialSystemCreateNode(matsys, FR_MATERIAL_NODE_DIFFUSE, &diffuse);
frMaterialNodeSetInputF(diffuse, "color", 0.5f, 0.5f, 0.5f, 1.f);
frShapeSetMaterial(plane, diffuse);
FIRERENDER"API"EXAMPLE"(2/4)"SIMPLE"RENDER""
Create Point Light
Create Mesh
Create shader
![Page 18: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/18.jpg)
18" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
Create frame buffer
Render & Save
// Create framebuffer to store rendering result
fr_framebuffer_desc desc;
desc.fb_width = 800;
desc.fb_height = 600;
fr_framebuffer_format fmt = {4, FR_COMPONENT_TYPE_FLOAT32};
fr_framebuffer frame_buffer;
frContextCreateFrameBuffer(context, fmt, &desc, &frame_buffer);
frFrameBufferClear(frame_buffer);
frContextSetAOV(context, FR_AOV_COLOR, frame_buffer);
// Render
frContextRender(context);
// Save the result to file
frFrameBufferSaveToFile(frame_buffer, "simple_render.png");
FIRERENDER"API"EXAMPLE"(3/4)"SIMPLE"RENDER""
![Page 19: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/19.jpg)
19" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
Create frame buffer
Render & Save
// Create framebuffer to store rendering result
fr_framebuffer_desc desc;
desc.fb_width = 800;
desc.fb_height = 600;
fr_framebuffer_format fmt = {4, FR_COMPONENT_TYPE_FLOAT32};
fr_framebuffer frame_buffer;
frContextCreateFrameBuffer(context, fmt, &desc, &frame_buffer);
frFrameBufferClear(frame_buffer);
frContextSetAOV(context, FR_AOV_COLOR, frame_buffer);
// Render
frContextRender(context);
// Save the result to file
frFrameBufferSaveToFile(frame_buffer, "simple_render.png");
FIRERENDER"API"EXAMPLE"(3/4)"SIMPLE"RENDER""
![Page 20: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/20.jpg)
20" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
// Create BXDFs
fr_material_node base, top;
{
frMaterialSystemCreateNode(matsys, FR_MATERIAL_NODE_DIFFUSE, &base);
frMaterialNodeSetInputF(base, "color", r0, g0, b0, 1.f);
frMaterialSystemCreateNode(matsys, FR_MATERIAL_NODE_MICROFACET, &top);
frMaterialNodeSetInputF(top, "color", r1, g1, b1, 1.f);
frMaterialNodeSetInputF(top, "roughness", 0.1f, 0.f, 0.f, 1.f);
}
// Create a layered shader
fr_material_node layered;
{
frMaterialSystemCreateNode(matsys, FR_MATERIAL_NODE_BLEND, &layered);
frMaterialNodeSetInputN(layered, "color0", base);
frMaterialNodeSetInputN(layered, "color1", top);
frMaterialNodeSetInputF(layered, "weight", 0.5f, 0.5f, 0.5f, 1.f);
}+
FIRERENDER"API"EXAMPLE"(4/4)"LAYERED"SHADER"
Blend+
Diffuse+ Glossy+ Weight+++0.5+
![Page 21: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/21.jpg)
21" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
PERFORMANCE+
![Page 22: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/22.jpg)
22" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"FEBRUARY"2015"""|"""CONFIDENTIAL"
RENDERING"TIME?"2"X"RADEON"PRO"DUO"@"1280"X"720"
![Page 23: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/23.jpg)
23" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"FEBRUARY"2015"""|"""CONFIDENTIAL"
RENDERING"TIME?"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""~"5"SECONDS"2"X"RADEON"PRO"DUO"@"1280"X"720"
![Page 24: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/24.jpg)
24" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
PERFORMANCE"2"X"RADEON"PRO"DUO"@"1280"X"720"
5s+ 30s+
![Page 25: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/25.jpg)
25" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
PERFORMANCE"2"X"RADEON"PRO"DUO"@"1280"X"720"
5s+ 30s+
![Page 26: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/26.jpg)
26" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
PERFORMANCE"2"X"RADEON"PRO"DUO"@"1280"X"720"
5s+ 30s+
![Page 27: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/27.jpg)
27" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
EXAMPLES+
![Page 28: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/28.jpg)
28" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
EXAMPLES"
![Page 29: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/29.jpg)
29" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
![Page 30: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/30.jpg)
30" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
![Page 31: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/31.jpg)
31" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
![Page 32: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/32.jpg)
32" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
![Page 33: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/33.jpg)
33" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
3DS"MAX"PLUGIN"DEMO"
![Page 34: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/34.jpg)
34" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! Open"to"registered"developers"
! hnp://developer.amd.com/toolsQandQsdks/graphicsQdevelopment/fireproQsdk/amdQfirerenderQtechnology/"
FIRERENDER"SDK"
![Page 35: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/35.jpg)
35" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
FIRERAYS+
![Page 36: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/36.jpg)
36" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! PhotorealisKc"rendering"! Collision"detecKon"! ParKcle"physics"! Game"AI""! Medical"imaging"! PredicKve"rendering"! Sound"propagaKon"! RealQKme"effects"
MOTIVATION"
![Page 37: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/37.jpg)
37" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! Massively"parallel"architecture"! Naïve"approach"does"not"work"on"GPUs"
! Variety"of"hardware"to"support"! Rapidly"changing"sovware""
‒ DX/GL"‒ "OpenCL"‒ "Vulkan/DX12"‒ "HCC"
GPU"ACCELERATION"
![Page 38: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/38.jpg)
38" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! Fast"intersecKon"API:""‒ Best"perf"on"AMD"‒ CPU/GPU/MGPU"
GPU"ACCELERATION:""FIRERAYS"
! CrossQpla`orm"‒ Windows"/"Linux"/""OSX"
! CrossQvendor"
! OpenQsource"renderer"! Hosted"on"GPUOpen"
![Page 39: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/39.jpg)
39" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! Triangle"meshes"! Instancing"support"
"
GPU"ACCELERATION:""FIRERAYS"
! Fast"traversal"! Ray"masking"
"
! CPU/GPU"BVH"! OpenCL"interop"
"
![Page 40: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/40.jpg)
40" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! SDK"is"hosted"on"GitHub"! Library"binaries:"
‒ "Windows""‒ "Mac"OS"(coming"soon)"‒ "Linux"("coming"soon)"
! OpenQsource"sample"renderer"‒ "Efficient"streaming"pathQtracer"‒ "Illustrates"FireRays"usage"
! Benchmark"
FIRERAYS:"SDK"
hnps://github.com/GPUOpenQLibrariesAndSDKs/FireRays_SDK"
![Page 41: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/41.jpg)
41" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! High"quality"CPU"SBVH"‒ "Takes"longer"to"build""‒ "Fastest"traversal"‒ "Stackless"and"short"LDS"stack"‒ "Good"for"final"rendering"
FIRERAYS:"TECHNOLOGY"
! GPU"HLBVH"‒ "Fastest"build"‒ "Slower"traversal"(stacked"LDS)"‒ "Good"for"animaKon"&"preview"
![Page 42: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/42.jpg)
42" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! Fully"openQsource"! Reference"path"tracer"! Microkernel"based"! Efficient"reQcompacKon"! Supports"mulKple"GPUs"! Implemented"using"FireRays"OpenCL"interop"
FIRERAYS:"EXAMPLE"RENDERER"
! Compound"materials"‒ "Diffuse"‒ "ReflecKon"/"refracKon"‒ "Microfacet"Blinn"/"GGX"/"Beckmann"
‒ "Blend"‒ "Bump"‒ "Volume"scanering"‒ "SSS""
![Page 43: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/43.jpg)
43" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! Renderer"developers"‒ "Easy"integraKon"‒ "CrossQpla`orm"
FIRERAYS:"APPLICATIONS"
! CG"researchers"‒ "Fast"prototyping"‒ "OpenQsource"renderer"‒ "Going"fully"openQsource!"
! Physics"researchers"‒ "Easy"to"use"API"‒ "Not"specific"to"CG"
! Game"developers"‒ "Light"baking"‒ "Future"effects"‒ "We"are"going"Vulkan!"
![Page 44: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/44.jpg)
44" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
FIRERAYS:"API"USAGE"
! Pass"your"meshes"into"FireRays"! Setup"ray"buffers"
‒ "From"the"host"‒ "Or"CL"kernel"
! Query"intersecKons"! Handle"intersecKons"
// Enumerate all shapes in the scene !for (int i = 0; i < (int)shapes.size(); ++i) !{ !
Shape* shape = nullptr; !shape = api->CreateMesh(vertices, numvertices, sizeof(float3),
indices, 0, nullptr, numprims);!shape->SetTransform(shapes[i].m, inverse(shapes[i].m)); !api->AttachShape(shape); !
} ! !api->Commit(); !
"
// Intersect ray batch !api->IntersectBatch(rays[pass & 0x1], hitcount[pass & 0x1], maxrays, intersections, nullptr, nullptr); !
![Page 45: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/45.jpg)
45" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
FIRERAYS:"BEST"PRACTICES"
! Use"two"buffers"pingQpong"‒ "Helps"to"handle"many"bounces"
! Compact"the"work"‒ "Helps"to"avoid"divergence"‒ "Bener"memory"access"
! Do"not"use"mega"kernels"‒ "Helps"to"reduce"VGPR"usage"
! Try"to"generate"coherent"rays"
! Use"mulKple"API"instances"for"mGPU"
! Let"GPUs"work"asynchronously"! MonteQCarlo"is"good"to"distribute"to"mulKple"GPUs"
! Use"lockQless"interacKon"
![Page 46: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/46.jpg)
46" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
FIRERAYS:"EXAMPLE"RENDERER"
! Intersect"ray"buffer"
! Evaluate"volume"
! Compact"
! Evaluate"volume"
! Evaluate"surface"
! Extend"path"
![Page 47: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/47.jpg)
47" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! Web"interface"‒ "InteracKve"web"product"viewer"‒ "InteracKve"3D"configurator"
! Specific"requirements"‒ "Mainly"jewelry"rendering"‒ "RGB"is"not"enough"‒ "Need"realQKme"post"effects"
FIRERAYS:"USECASE"
![Page 48: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/48.jpg)
48" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
FIRERAYS:"STARQSHAPED"FILTER"
Bague"Lady"Gemmyo""©"2016"
![Page 49: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/49.jpg)
49" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
FIRERAYS:"SPECTRAL"RENDERING"
Bague"Lady"Gemmyo""©"2016"
![Page 50: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/50.jpg)
50" MARCH"2016"""|"""FIRERENDER,"FIRERAYS"MARCH"2016"""|"""FIRERENDER,"FIRERAYS"
! Go"fully"openQsource"on"GPUOpen!"! Vulkan"port"
‒ "Gaming"applicaKons"‒ "Flexible"3DQcompute"interop"‒ "Asynchronous"operaKon"
! NonQbatched"mode"! FireRender"backend"
FIRERAYS:"WHAT’S"NEXT?"
! Features"‒ "Faster"builds"/"traversal"‒ "Subdivision"&"displacement"‒ "Out"of"core"‒ "Improved"moKon"blur"
![Page 51: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/51.jpg)
1 MARCH2016|FIRERENDER,FIRERAYSMARCH2016|FIRERENDER,FIRERAYS
![Page 52: [2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays](https://reader031.vdocument.in/reader031/viewer/2022030312/58ed5b341a28abc26e8b4611/html5/thumbnails/52.jpg)
2 MARCH2016|FIRERENDER,FIRERAYSMARCH2016|FIRERENDER,FIRERAYS
§ WearelookingforpeoplewhocanworkwithusonFirerender&FireRays
§ SeveralposiJonsareavailable‒ DevelopmentofFirerender&FireRays‒ ResearchonMonteCarloraytracingalgorithm‒ ResearchondesigningalgorithmforfutureAMD’sGPU,CPUarchitecture‒ InternshipposiJonisalsoavailable
§ Ifyouareinterestedinthese,contactme([email protected])
LOOKINGFORPEOPLEWHOCANWORKWITHUS