NTrace
GPU ray tracing framework
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
RayBufferKernels.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2009-2011, NVIDIA Corporation
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
* * Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* * Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
12
* * Neither the name of NVIDIA Corporation nor the
13
* names of its contributors may be used to endorse or promote products
14
* derived from this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
20
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
*/
27
28
#pragma once
29
#include "
base/DLLImports.hpp
"
30
#include "
base/Math.hpp
"
31
#include "
Util.hpp
"
32
33
namespace
FW
34
{
35
//------------------------------------------------------------------------
36
37
enum
38
{
39
FindAABB_BlockWidth
= 32,
40
FindAABB_BlockHeight
= 8,
41
};
42
43
//------------------------------------------------------------------------
44
45
struct
MortonKey
46
{
47
S32
oldSlot
;
48
U32
hash
[6];
// 192-bit Morton key
49
};
50
51
//------------------------------------------------------------------------
52
53
struct
FindAABBInput
54
{
55
S32
numRays
;
56
S32
raysPerThread
;
57
CUdeviceptr
inRays
;
// const Ray*
58
};
59
60
//------------------------------------------------------------------------
61
62
struct
FindAABBOutput
63
{
64
Vec3f
aabbLo
;
65
Vec3f
aabbHi
;
66
};
67
68
//------------------------------------------------------------------------
69
70
struct
GenMortonKeysInput
71
{
72
S32
numRays
;
73
Vec3f
aabbLo
;
74
Vec3f
aabbHi
;
75
CUdeviceptr
inRays
;
// const Ray*
76
CUdeviceptr
outKeys
;
// MortonKey*
77
};
78
79
//------------------------------------------------------------------------
80
81
struct
ReorderRaysInput
82
{
83
S32
numRays
;
84
CUdeviceptr
inKeys
;
// const MortonKey*
85
CUdeviceptr
inRays
;
// const Ray*
86
CUdeviceptr
inSlotToID
;
// const S32*
87
CUdeviceptr
outRays
;
// Ray*
88
CUdeviceptr
outIDToSlot
;
// S32*
89
CUdeviceptr
outSlotToID
;
// S32*
90
};
91
92
//------------------------------------------------------------------------
93
94
#if FW_CUDA
95
extern
"C"
96
{
97
98
__constant__
FindAABBInput
c_FindAABBInput;
99
__device__ int4 c_FindAABBOutput[(
sizeof
(
FindAABBOutput
) +
sizeof
(int4) - 1) /
sizeof
(int4)];
100
__global__
void
findAABBKernel(
void
);
101
102
__constant__ int4 c_GenMortonKeysInput[(
sizeof
(
GenMortonKeysInput
) +
sizeof
(int4) - 1) /
sizeof
(int4)];
103
__global__
void
genMortonKeysKernel(
void
);
104
105
__constant__
ReorderRaysInput
c_ReorderRaysInput;
106
__global__
void
reorderRaysKernel(
void
);
107
108
}
109
#endif
110
111
//------------------------------------------------------------------------
112
}
FW::GenMortonKeysInput::inRays
CUdeviceptr inRays
Definition:
RayBufferKernels.hpp:75
FW::ReorderRaysInput::outIDToSlot
CUdeviceptr outIDToSlot
Definition:
RayBufferKernels.hpp:88
FW::ReorderRaysInput
Definition:
RayBufferKernels.hpp:81
FW::FindAABBInput::inRays
CUdeviceptr inRays
Definition:
RayBufferKernels.hpp:57
FW::GenMortonKeysInput
Definition:
RayBufferKernels.hpp:70
FW::ReorderRaysInput::numRays
S32 numRays
Definition:
RayBufferKernels.hpp:83
FW::ReorderRaysInput::inSlotToID
CUdeviceptr inSlotToID
Definition:
RayBufferKernels.hpp:86
FW::MortonKey
Definition:
RayBufferKernels.hpp:45
FW::MortonKey::hash
U32 hash[6]
Definition:
RayBufferKernels.hpp:48
FW::FindAABBInput::raysPerThread
S32 raysPerThread
Definition:
RayBufferKernels.hpp:56
FW::ReorderRaysInput::outSlotToID
CUdeviceptr outSlotToID
Definition:
RayBufferKernels.hpp:89
FW::S32
signed int S32
Definition:
Defs.hpp:88
FW::ReorderRaysInput::inRays
CUdeviceptr inRays
Definition:
RayBufferKernels.hpp:85
FW::FindAABB_BlockWidth
Definition:
RayBufferKernels.hpp:39
FW::FindAABBOutput::aabbHi
Vec3f aabbHi
Definition:
RayBufferKernels.hpp:65
Math.hpp
FW::U32
unsigned int U32
Definition:
Defs.hpp:85
FW::ReorderRaysInput::outRays
CUdeviceptr outRays
Definition:
RayBufferKernels.hpp:87
FW::MortonKey::oldSlot
S32 oldSlot
Definition:
RayBufferKernels.hpp:47
FW::Vec3f
Definition:
Math.hpp:324
FW::GenMortonKeysInput::aabbLo
Vec3f aabbLo
Definition:
RayBufferKernels.hpp:73
Util.hpp
DLLImports.hpp
FW::GenMortonKeysInput::outKeys
CUdeviceptr outKeys
Definition:
RayBufferKernels.hpp:76
FW::FindAABBInput::numRays
S32 numRays
Definition:
RayBufferKernels.hpp:55
FW::FindAABB_BlockHeight
Definition:
RayBufferKernels.hpp:40
FW::GenMortonKeysInput::numRays
S32 numRays
Definition:
RayBufferKernels.hpp:72
FW::ReorderRaysInput::inKeys
CUdeviceptr inKeys
Definition:
RayBufferKernels.hpp:84
FW::FindAABBInput
Definition:
RayBufferKernels.hpp:53
FW::GenMortonKeysInput::aabbHi
Vec3f aabbHi
Definition:
RayBufferKernels.hpp:74
FW::FindAABBOutput::aabbLo
Vec3f aabbLo
Definition:
RayBufferKernels.hpp:64
FW::FindAABBOutput
Definition:
RayBufferKernels.hpp:62
src
rt
ray
RayBufferKernels.hpp
Generated on Wed Dec 10 2014 14:36:54 for NTrace by
1.8.6