-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsbuffer.fxh
104 lines (88 loc) · 2.27 KB
/
sbuffer.fxh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#define SBUFFER_FXH
////////////////////////////////////////////////////////////////
//
// Structured Buffer Helpers
//
////////////////////////////////////////////////////////////////
// Buffersize
uint sbSize (StructuredBuffer<float> sBuffer)
{
uint count, dummy;
sBuffer.GetDimensions(count,dummy);
return count;
}
uint sbSize (StructuredBuffer<float2> sBuffer)
{
uint count, dummy;
sBuffer.GetDimensions(count,dummy);
return count;
}
uint sbSize (StructuredBuffer<float3> sBuffer)
{
uint count, dummy;
sBuffer.GetDimensions(count,dummy);
return count;
}
uint sbSize (StructuredBuffer<float4> sBuffer)
{
uint count, dummy;
sBuffer.GetDimensions(count,dummy);
return count;
}
uint sbSize (StructuredBuffer<float4x4> sBuffer)
{
uint count, dummy;
sBuffer.GetDimensions(count,dummy);
return count;
}
uint sbSize (StructuredBuffer<uint> sBuffer)
{
uint count, dummy;
sBuffer.GetDimensions(count,dummy);
return count;
}
// Safe Buffer Load with Defualt value
float sbLoad(StructuredBuffer<float> sBuffer, float defaultValue, uint dtid)
{
float value = defaultValue;
uint count = sbSize(sBuffer);
if (count > 0) value = sBuffer[dtid.x % count];
return value;
}
float2 sbLoad(StructuredBuffer<float2> sBuffer, float2 defaultValue, uint dtid)
{
float2 value = defaultValue;
uint count = sbSize(sBuffer);
if (count > 0) value = sBuffer[dtid.x % count];
return value;
}
float3 sbLoad(StructuredBuffer<float3> sBuffer, float3 defaultValue, uint dtid)
{
float3 value = defaultValue;
uint count = sbSize(sBuffer);
if (count > 0) value = sBuffer[dtid.x % count];
return value;
}
float4 sbLoad(StructuredBuffer<float4> sBuffer, float4 defaultValue, uint dtid)
{
float4 value = defaultValue;
uint count = sbSize(sBuffer);
if (count > 0) value = sBuffer[dtid.x % count];
return value;
}
float4x4 sbLoad(StructuredBuffer<float4x4> sBuffer, float4x4 defaultValue, uint dtid)
{
float4x4 value = defaultValue;
uint count = sbSize(sBuffer);
if (count > 0) value = sBuffer[dtid.x % count];
return value;
}
uint sbLoad(StructuredBuffer<uint> sBuffer, uint defaultValue, uint dtid)
{
uint value = defaultValue;
uint count = sbSize(sBuffer);
if (count > 0) value = sBuffer[dtid.x % count];
return value;
}
////////////////////////////////////////////////////////////////
//EOF