Difference between revisions of "User:Vasco.costa"
From BRL-CAD
Vasco.costa (talk | contribs) |
Vasco.costa (talk | contribs) |
||
Line 7: | Line 7: | ||
* 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. | * 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. | ||
* Refactor code so single-hit and multi-hit don't require recompiling all the sources twice. | * Refactor code so single-hit and multi-hit don't require recompiling all the sources twice. | ||
− | * Don't intersect primitives twice. | + | * Don't intersect primitives twice. This requires a dynamic memory allocator. |
* Execute prefix sums and reductions in <code>clt_frame()</code> on the device. | * Execute prefix sums and reductions in <code>clt_frame()</code> on the device. | ||
* Quadrics Primitives: HYP, SUPERELL. | * Quadrics Primitives: HYP, SUPERELL. |
Revision as of 16:42, 23 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
- Split
struct hit
in common.cl into two structs. One forshot()
results and another fornorm()
results. This will reduce the amount of memory used to store temporary results between stages. - Refactor code so single-hit and multi-hit don't require recompiling all the sources twice.
- Don't intersect primitives twice. This requires a dynamic memory allocator.
- Execute prefix sums and reductions in
clt_frame()
on the device. - Quadrics Primitives: HYP, SUPERELL.
- Grids Primitives: DSP, EBM, VOL.
- Composite Primitives: EXTRUDE, REVOLVE, PIPE, METABALL.
- Instancing Primitive: SUBMODEL.
- Make Phong shader results look 100% similar to ANSI C librt.
- 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).
OCL librt Development Status
- 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, 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.