Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 25 additions & 13 deletions gpu/pipelines/GeneralPipelineDisk.cu
Original file line number Diff line number Diff line change
Expand Up @@ -172,21 +172,33 @@ extern "C" __global__ void __raygen__() {
// the values we store the PRD pointer in:
uint32_t u0, u1;
packPointer((void *)&prd, u0, u1);
unsigned int hintBitLength = 2;

while (continueRay(launchParams, prd)) {
optixTrace(launchParams.traversable, // traversable GAS
make_float3(prd.pos[0], prd.pos[1], prd.pos[2]), // origin
make_float3(prd.dir[0], prd.dir[1], prd.dir[2]), // direction
1e-4f, // tmin
1e20f, // tmax
0.0f, // rayTime
OptixVisibilityMask(255),
OPTIX_RAY_FLAG_DISABLE_ANYHIT, // OPTIX_RAY_FLAG_NONE,
0, // SBT offset
1, // SBT stride
0, // missSBTIndex
u0, u1); // Payload
prd.totalCount = 0; // Reset PerRayData
optixTraverse(launchParams.traversable, // traversable GAS
make_float3(prd.pos[0], prd.pos[1], prd.pos[2]), // origin
make_float3(prd.dir[0], prd.dir[1], prd.dir[2]), // direction
1e-4f, // tmin
1e20f, // tmax
0.0f, // rayTime
OptixVisibilityMask(255),
OPTIX_RAY_FLAG_DISABLE_ANYHIT, // OPTIX_RAY_FLAG_NONE,
0, // SBT offset
1, // SBT stride
0, // missSBTIndex
u0, u1); // Payload
unsigned int hint = 0;
if (prd.rayWeight < launchParams.rayWeightThreshold || prd.energy < 0.f) {
hint |= (1 << 0);
}
if (optixHitObjectIsHit()) {
const HitSBTDataDisk *hitData = reinterpret_cast<const HitSBTDataDisk *>(
optixHitObjectGetSbtDataPointer());
hint |= hitData->base.isBoundary << 1;
}
optixReorder(hint, hintBitLength);
optixInvoke(u0, u1);
prd.totalCount = 0; // Reset PerRayData
prd.numReflections++;
}
}
38 changes: 25 additions & 13 deletions gpu/pipelines/GeneralPipelineLine.cu
Original file line number Diff line number Diff line change
Expand Up @@ -114,21 +114,33 @@ extern "C" __global__ void __raygen__() {
// the values we store the PRD pointer in:
uint32_t u0, u1;
packPointer((void *)&prd, u0, u1);
unsigned int hintBitLength = 2;

while (continueRay(launchParams, prd)) {
optixTrace(launchParams.traversable, // traversable GAS
make_float3(prd.pos[0], prd.pos[1], prd.pos[2]), // origin
make_float3(prd.dir[0], prd.dir[1], prd.dir[2]), // direction
1e-4f, // tmin
1e20f, // tmax
0.0f, // rayTime
OptixVisibilityMask(255),
OPTIX_RAY_FLAG_DISABLE_ANYHIT, // OPTIX_RAY_FLAG_NONE,
0, // SBT offset
1, // SBT stride
0, // missSBTIndex
u0, u1); // Payload
prd.totalCount = 0; // Reset PerRayData
optixTraverse(launchParams.traversable, // traversable GAS
make_float3(prd.pos[0], prd.pos[1], prd.pos[2]), // origin
make_float3(prd.dir[0], prd.dir[1], prd.dir[2]), // direction
1e-4f, // tmin
1e20f, // tmax
0.0f, // rayTime
OptixVisibilityMask(255),
OPTIX_RAY_FLAG_DISABLE_ANYHIT, // OPTIX_RAY_FLAG_NONE,
0, // SBT offset
1, // SBT stride
0, // missSBTIndex
u0, u1); // Payload
unsigned int hint = 0;
if (prd.rayWeight < launchParams.rayWeightThreshold || prd.energy < 0.f) {
hint |= (1 << 0);
}
if (optixHitObjectIsHit()) {
const HitSBTDataLine *hitData = reinterpret_cast<const HitSBTDataLine *>(
optixHitObjectGetSbtDataPointer());
hint |= hitData->base.isBoundary << 1;
}
optixReorder(hint, hintBitLength);
optixInvoke(u0, u1);
prd.totalCount = 0; // Reset PerRayData
prd.numReflections++;
}
}
36 changes: 24 additions & 12 deletions gpu/pipelines/GeneralPipelineTriangle.cu
Original file line number Diff line number Diff line change
Expand Up @@ -84,20 +84,32 @@ extern "C" __global__ void __raygen__() {
// the values we store the PRD pointer in:
uint32_t u0, u1;
packPointer((void *)&prd, u0, u1);
unsigned int hintBitLength = 2;

while (continueRay(launchParams, prd)) {
optixTrace(launchParams.traversable, // traversable GAS
make_float3(prd.pos[0], prd.pos[1], prd.pos[2]), // origin
make_float3(prd.dir[0], prd.dir[1], prd.dir[2]), // direction
1e-4f, // tmin
1e20f, // tmax
0.0f, // rayTime
OptixVisibilityMask(255),
OPTIX_RAY_FLAG_DISABLE_ANYHIT, // OPTIX_RAY_FLAG_NONE,
0, // SBT offset
1, // SBT stride
0, // missSBTIndex
u0, u1); // Payload
optixTraverse(launchParams.traversable, // traversable GAS
make_float3(prd.pos[0], prd.pos[1], prd.pos[2]), // origin
make_float3(prd.dir[0], prd.dir[1], prd.dir[2]), // direction
1e-4f, // tmin
1e20f, // tmax
0.0f, // rayTime
OptixVisibilityMask(255),
OPTIX_RAY_FLAG_DISABLE_ANYHIT, // OPTIX_RAY_FLAG_NONE,
0, // SBT offset
1, // SBT stride
0, // missSBTIndex
u0, u1); // Payload
unsigned int hint = 0;
if (prd.rayWeight < launchParams.rayWeightThreshold || prd.energy < 0.f) {
hint |= (1 << 0);
}
if (optixHitObjectIsHit()) {
const HitSBTDataTriangle *hitData = reinterpret_cast<const HitSBTDataTriangle *>(
optixHitObjectGetSbtDataPointer());
hint |= hitData->base.isBoundary << 1;
}
optixReorder(hint, hintBitLength);
optixInvoke(u0, u1);
prd.numReflections++;
#ifdef COUNT_RAYS
int *counter = reinterpret_cast<int *>(launchParams.customData);
Expand Down