@@ -13,11 +13,12 @@ using namespace viennaray::gpu;
1313#ifdef __CUDACC__
1414__device__ __inline__ viennacore::Vec3Df
1515computeNormal (const void *sbtData, const unsigned int primID) {
16+ using namespace viennacore ;
1617 const HitSBTDataBase *baseData =
1718 reinterpret_cast <const HitSBTDataBase *>(sbtData);
1819 switch (baseData->geometryType ) {
1920 case 0 : {
20- using namespace viennacore ;
21+ // Triangles
2122 const HitSBTDataTriangle *sbt =
2223 reinterpret_cast <const HitSBTDataTriangle *>(sbtData);
2324 const Vec3D<unsigned > &index = sbt->index [primID];
@@ -27,12 +28,11 @@ computeNormal(const void *sbtData, const unsigned int primID) {
2728 return Normalize<float , 3 >(CrossProduct<float >(B - A, C - A));
2829 } break ;
2930 case 1 : {
30- const HitSBTDataDisk *sbt =
31- reinterpret_cast <const HitSBTDataDisk *>(sbtData);
32- return sbt->normal [primID];
31+ // Disks
32+ return baseData->normal [primID];
3333 } break ;
3434 case 2 : {
35- using namespace viennacore ;
35+ // Lines
3636 const HitSBTDataLine *sbt =
3737 reinterpret_cast <const HitSBTDataLine *>(sbtData);
3838 Vec3Df p0 = sbt->nodes [sbt->lines [primID][0 ]];
@@ -48,6 +48,11 @@ computeNormal(const void *sbtData, const unsigned int primID) {
4848 }
4949}
5050
51+ __device__ __forceinline__ viennacore::Vec3Df
52+ getNormal (const void *sbtData, const unsigned int primID) {
53+ return reinterpret_cast <const HitSBTDataBase *>(sbtData)->normal [primID];
54+ }
55+
5156static __device__ __forceinline__ void
5257specularReflection (viennaray::gpu::PerRayData *prd,
5358 const viennacore::Vec3Df &geoNormal) {
@@ -163,7 +168,7 @@ PickRandomPointOnUnitSphere(viennaray::gpu::RNGState *state) {
163168
164169static __device__ void diffuseReflection (viennaray::gpu::PerRayData *prd,
165170 const viennacore::Vec3Df &geoNormal,
166- const int D) {
171+ const uint8_t D) {
167172 using namespace viennacore ;
168173#ifndef VIENNARAY_TEST
169174 prd->pos = prd->pos + prd->tMin * prd->dir ;
@@ -178,7 +183,7 @@ static __device__ void diffuseReflection(viennaray::gpu::PerRayData *prd,
178183}
179184
180185static __device__ void diffuseReflection (viennaray::gpu::PerRayData *prd,
181- const int D) {
186+ const uint8_t D) {
182187 using namespace viennacore ;
183188
184189 const viennaray::gpu::HitSBTDataDisk *sbtData =
@@ -190,7 +195,7 @@ static __device__ void diffuseReflection(viennaray::gpu::PerRayData *prd,
190195static __device__ __forceinline__ void
191196conedCosineReflection (viennaray::gpu::PerRayData *prd,
192197 const viennacore::Vec3Df &geomNormal,
193- const float maxConeAngle, const int D) {
198+ const float maxConeAngle, const uint8_t D) {
194199 using namespace viennacore ;
195200
196201 // TODO: Is this needed? Done in the CPU version
0 commit comments