Difference between revisions of "User:Vasco.costa"

From BRL-CAD
 
(39 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Hello. I am interested in ray-tracing, and GPGPU. I plan to work on [[User:Vasco.costa/GSoC15/logs/OpenCL acceleration of the BRL-CAD librt rendering pipeline]].
+
Hello. I am interested in ray-tracing, and GPGPU. I work on the [[User:Vasco.costa/GSoC15/logs|OpenCL acceleration of the BRL-CAD librt rendering pipeline]]:
 +
* [https://www.google-melange.com/gsoc/project/details/google/gsoc2015/vasc/5657382461898752 GSoC 2015 Abstract]
 +
* [[User:vasco.costa/GSoC15/proposal|GSoC 2015 Project Proposal]]
 +
* [[User:vasco.costa/GSoC15/logs|GSoC 2015 Development Logs]]
  
* [https://www.google-melange.com/gsoc/project/details/google/gsoc2015/vasc/5657382461898752 Abstract]
+
=OCL librt TODO=
* [[User:vasco.costa/GSoC15/proposal|Project Proposal]]
+
* Split <code>struct hit</code> in common.cl into two structs. One for <code>shot()</code> results and another for <code>norm()</code> results. This will reduce the amount of memory used to store temporary results between stages.
* [[User:vasco.costa/GSoC15/logs|Development Logs]]
+
* Execute prefix sums and reductions in <code>clt_frame()</code> on the device to eliminate round-trips.
 +
* Refactor code so single-hit and multi-hit don't require recompiling all the sources twice.
 +
* Cache the compiled binaries so things aren't recompiled on every launch.
 +
* Quadrics Primitives: HYP, SUPERELL.
 +
* Grids Primitives: '''DSP''', <s>EBM</s>, VOL.
 +
* Composite Primitives: '''PIPE''', '''NMG''', METABALL, EXTRUDE, REVOLVE.
 +
* Instancing Primitive: SUBMODEL.
 +
* Make Phong shader results look 100% similar to ANSI C librt.
 +
* Support lights in the shader.
 +
* Don't intersect primitives twice. This requires a dynamic memory allocator.
 +
* Smarter kernel scheduling for reduce thread divergence. For example coallesce all the quadric intersections.
 +
* Spatial partitioning (perhaps a hybrid Kd-tree) in order to have early exit on scenes with high depth complexity.
 +
* UV routines for all OCL implemented primitives.
 +
* BREP support.
 +
* BOT plate mode.
 +
* FASTGEN support (both CLINE primitive and bool.cl code).
  
 +
Deprecated primitives:
 +
* ARS is converted to BOT.
 +
* HF is converted to DSP.
  
=Development Status=
+
=OCL librt Development Status=
{|
+
* Refactored dispatcher, shoot, optical renderer to process many rays in parallel when rendering an image or block.
!Milestone!!align="left"|Description!!Patch!!align="left"|Status
+
* HLBVH object partitioning builder in C. traversal in OCL.
|-
+
* GPU side database storage of OCL implemented primitives.
|M0.1||fix OCL SPH shot routine compilation errors.||#341||'''TRUNK'''
+
* Ported compute intensive or critical parts of the dispatcher, boolean evaluation, optical renderer to OCL.
|-
+
* OCL dispatcher that performs the shot routines for a whole frame.
|M0.2||EHY shot routine in OCL.||#346||'''TRUNK'''
+
* OCL rasterizer that does the pixel pushing for a whole frame.
|-
+
* OCL lighting modes: Phong, Diffuse, Surface Normals.
| || || ||
+
* OCL lighting modes: Multi-hit transparent (Single Stage Render Pipeline only).
|-
+
* ARB8, EBM, EHY, ELL, EPA, ETO, PART, REC, RHC, RPC, SPH, TGC, TOR shot routines in OCL.
|M1||ELL and ARB8 shot routines in OCL.||#370||'''TRUNK'''
+
* Surface normal routines for all OCL implemented primitives.
|-
+
* CPU HLBVH BOT shot construction with OCL traversal and interpolated per pixel normals.
|M2||<s>refactor dispatcher, shoot, optical renderer to process many rays in parallel in C when rendering an image or block.</s>||||''see M5''
 
|-
 
|M3.0||<s>grid spatial partitioning in C.</s>||#379||''see M3.2''
 
|-
 
|M3.1||<s>grid spatial partitioning in OCL.</s>||#379||''see M3.2''
 
|-
 
|M3.2||HLBVH object partitioning builder in C. traversal in OCL.||||'''TRUNK'''
 
|-
 
|M4||GPU side database storage of OCL implemented primitives.||#392||'''TRUNK'''
 
|-
 
|M5||port compute intensive or critical parts of the dispatcher, <s>boolean evaluation</s>, optical renderer to OCL.|| ||'''TRUNK'''
 
|-
 
|M5.1||OCL dispatcher that performs the shot routines for a whole frame.||||'''TRUNK'''
 
|-
 
|M5.2||OCL rasterizer that does the pixel pushing for a whole frame.||||'''TRUNK'''
 
|-
 
|M5.3||OCL lighting modes: Phong, Diffuse, Surface Normals.||||'''TRUNK'''
 
|-
 
|M5.4||OCL lighting modes: Multi-hit transparent.||||'''TRUNK'''
 
|-
 
|M6||TOR and TGC shot routines in OCL.||#393||'''TRUNK'''
 
|-
 
|M6.1||REC shot routine in OCL.||||'''TRUNK'''
 
|-
 
|M6.2||Surface normal routines for all seven OCL implemented primitives.||||'''TRUNK'''
 
|-
 
|M7||BOT shot routine in OCL.||||-
 
|-
 
|M7.1||Simple BOT shot routine in OCL that computes triangle hits and normals brute force.||||'''TRUNK'''
 
|-
 
|M7.2||CPU HLBVH BOT shot construction with OCL traversal and interpolated per pixel normals.||||'''TRUNK'''
 
|}
 

Latest revision as of 20:57, 24 October 2017

Hello. I am interested in ray-tracing, and GPGPU. I work on the OpenCL acceleration of the BRL-CAD librt rendering pipeline:

OCL librt TODO[edit]

  • Split struct hit in common.cl into two structs. One for shot() results and another for norm() results. This will reduce the amount of memory used to store temporary results between stages.
  • Execute prefix sums and reductions in clt_frame() on the device to eliminate round-trips.
  • Refactor code so single-hit and multi-hit don't require recompiling all the sources twice.
  • Cache the compiled binaries so things aren't recompiled on every launch.
  • Quadrics Primitives: HYP, SUPERELL.
  • Grids Primitives: DSP, EBM, VOL.
  • Composite Primitives: PIPE, NMG, METABALL, EXTRUDE, REVOLVE.
  • Instancing Primitive: SUBMODEL.
  • Make Phong shader results look 100% similar to ANSI C librt.
  • Support lights in the shader.
  • Don't intersect primitives twice. This requires a dynamic memory allocator.
  • Smarter kernel scheduling for reduce thread divergence. For example coallesce all the quadric intersections.
  • Spatial partitioning (perhaps a hybrid Kd-tree) in order to have early exit on scenes with high depth complexity.
  • UV routines for all OCL implemented primitives.
  • BREP support.
  • BOT plate mode.
  • FASTGEN support (both CLINE primitive and bool.cl code).

Deprecated primitives:

  • ARS is converted to BOT.
  • HF is converted to DSP.

OCL librt Development Status[edit]

  • Refactored dispatcher, shoot, optical renderer to process many rays in parallel when rendering an image or block.
  • HLBVH object partitioning builder in C. traversal in OCL.
  • GPU side database storage of OCL implemented primitives.
  • Ported compute intensive or critical parts of the dispatcher, boolean evaluation, optical renderer to OCL.
  • OCL dispatcher that performs the shot routines for a whole frame.
  • OCL rasterizer that does the pixel pushing for a whole frame.
  • OCL lighting modes: Phong, Diffuse, Surface Normals.
  • OCL lighting modes: Multi-hit transparent (Single Stage Render Pipeline only).
  • ARB8, EBM, EHY, ELL, EPA, ETO, PART, REC, RHC, RPC, SPH, TGC, TOR shot routines in OCL.
  • Surface normal routines for all OCL implemented primitives.
  • CPU HLBVH BOT shot construction with OCL traversal and interpolated per pixel normals.