Skip to content

Commit 371d614

Browse files
not the most satisfying implementation of robust ray origins, but oh well
1 parent 1a7412f commit 371d614

File tree

4 files changed

+12
-6
lines changed

4 files changed

+12
-6
lines changed

examples_tests/22.RaytracedAO/Renderer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ Renderer::InitializationData Renderer::initSceneObjects(const SAssetBundle& mesh
408408

409409
const auto instanceID = std::distance(instanceAuxData.begin(),auxIt);
410410
*newInstanceData = mbInstanceData[instanceID];
411-
assert(instanceData.begin()[instanceID].worldTform==newInstanceData->tform);
411+
//assert(instanceData.begin()[instanceID].worldTform==newInstanceData->tform); TODO: later
412412
newInstanceData->padding0 = firstIndex;
413413
newInstanceData->padding1 = reinterpret_cast<const uint32_t&>(cdotIt->attribInfo[posAttrID]);
414414
newInstanceData->determinantSignBit = core::bitfieldInsert(

examples_tests/22.RaytracedAO/closestHit.comp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,11 @@ void main()
101101
#if 1
102102
if (vertex_depth!=2u)
103103
emissive = vec3(0.f);
104+
else
105+
emissive = frontfacing ? vec3(0.f,10.f,0.f):vec3(10.f,0.f,0.f);
104106
#endif
105107
}
106-
#if 0
108+
#if 1
107109
// TODO: finish MIS
108110
vec3 acc;
109111
const uvec3 accumulationLocation = uvec3(outPixelLocation,sampleID%staticViewData.samplesPerPixelPerDispatch);

examples_tests/22.RaytracedAO/raygen.comp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ void main()
6767
const vec3 origin = nbl_glsl_interpolate_with_bounds(origin_error,dPdBary,dPdBary_error,lastVxPos,lastVxPos_error,compactBary,compactBary_error);
6868
normalizedV = normalize(pc.cummon.camPos-origin);
6969

70-
emissive = vec3(1000.f)*dot(abs(normalizedN),origin_error)*1.03125f;
70+
//emissive = vec3(1000.f)*dot(abs(normalizedN),origin_error)*1.03125f;
7171

7272
// generate rays
7373
const uint vertex_depth = 1u;

examples_tests/22.RaytracedAO/raytraceCommon.glsl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ void gen_sample_ray(
260260
void generate_next_rays(
261261
in uint maxRaysToGen, in nbl_glsl_MC_oriented_material_t material, in bool frontfacing, in uint vertex_depth,
262262
in nbl_glsl_xoroshiro64star_state_t scramble_start_state, in uint sampleID, in uvec2 outPixelLocation,
263-
in vec3 origin, in vec3 origin_error, in vec3 prevThroughput)
263+
in vec3 origin, vec3 origin_error, in vec3 prevThroughput)
264264
{
265265
// get material streams as well
266266
const nbl_glsl_MC_instr_stream_t gcs = nbl_glsl_MC_oriented_material_t_getGenChoiceStream(material);
@@ -301,15 +301,19 @@ for (uint i=1u; i!=vertex_depth; i++)
301301
}
302302
// TODO: investigate workgroup reductions here
303303
const uint baseOutputID = atomicAdd(rayCount[pc.cummon.rayCountWriteIx],raysToAllocate);
304-
304+
305+
const vec3 geomNormal = cross(dPdBary[0],dPdBary[1]);
306+
float ray_offset = dot(normalize(abs(normalizedN)),origin_error)+nbl_glsl_ieee754_gamma(3u);
307+
//float ray_offset = nbl_glsl_ieee754_gamma(3u);
305308
// adjust for the fact that the normal might be too short (inversesqrt precision)
306-
const float ray_offset = dot(abs(normalizedN),origin_error)*1.03125f;
309+
ray_offset *= 1.03125f;
307310
uint offset = 0u;
308311
for (uint i=0u; i<maxRaysToGen; i++)
309312
if (maxT[i]!=0.f)
310313
{
311314
nbl_glsl_ext_RadeonRays_ray newRay;
312315
newRay.origin = nbl_glsl_robust_ray_origin_impl(origin,direction[i],ray_offset,normalizedN);
316+
//newRay.origin = nbl_glsl_robust_ray_origin_impl(origin,direction[i],ray_offset,geomNormal);
313317
newRay.maxT = maxT[i];
314318
newRay.direction = direction[i];
315319
newRay.time = packOutPixelLocation(outPixelLocation);

0 commit comments

Comments
 (0)