Skip to content

Commit b794c96

Browse files
committed
Vary the sample count depending on roughness
1 parent 10de810 commit b794c96

2 files changed

Lines changed: 105 additions & 1 deletion

File tree

Assets/ScriptableRenderLoop/HDRenderLoop/Sky/Resources/GGXConvolve.shader

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,22 @@ Shader "Hidden/HDRenderLoop/GGXConvolve"
7474
1024,
7575
false);
7676
#else
77+
uint sampleCount = 0;
78+
79+
switch (_Level)
80+
{
81+
case 1: sampleCount = 21; break;
82+
case 2: sampleCount = 34; break;
83+
case 3: sampleCount = 55; break;
84+
case 4: sampleCount = 55; break;
85+
case 5: sampleCount = 89; break;
86+
}
87+
7788
float4 val = IntegrateLD(TEXTURECUBE_PARAM(_MainTex, sampler_MainTex),
7889
V, N,
7990
roughness,
8091
_InvOmegaP,
81-
55, // Must be a Fibonacci number
92+
sampleCount, // Must be a Fibonacci number
8293
true);
8394
#endif
8495

Assets/ScriptableRenderLoop/ShaderLibrary/Fibonacci.hlsl

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,98 @@ static const float2 k_Fibonacci2dSeq55[] = {
133133
float2(0.98181820, 0.38181686)
134134
};
135135

136+
static const float2 k_Fibonacci2dSeq89[] = {
137+
float2(0.00000000, 0.00000000),
138+
float2(0.01123596, 0.61797750),
139+
float2(0.02247191, 0.23595500),
140+
float2(0.03370786, 0.85393250),
141+
float2(0.04494382, 0.47191000),
142+
float2(0.05617978, 0.08988762),
143+
float2(0.06741573, 0.70786500),
144+
float2(0.07865169, 0.32584238),
145+
float2(0.08988764, 0.94382000),
146+
float2(0.10112359, 0.56179762),
147+
float2(0.11235955, 0.17977524),
148+
float2(0.12359551, 0.79775238),
149+
float2(0.13483146, 0.41573000),
150+
float2(0.14606741, 0.03370762),
151+
float2(0.15730338, 0.65168476),
152+
float2(0.16853933, 0.26966286),
153+
float2(0.17977528, 0.88764000),
154+
float2(0.19101124, 0.50561714),
155+
float2(0.20224719, 0.12359524),
156+
float2(0.21348314, 0.74157238),
157+
float2(0.22471911, 0.35955048),
158+
float2(0.23595506, 0.97752762),
159+
float2(0.24719101, 0.59550476),
160+
float2(0.25842696, 0.21348286),
161+
float2(0.26966292, 0.83146000),
162+
float2(0.28089887, 0.44943714),
163+
float2(0.29213482, 0.06741524),
164+
float2(0.30337077, 0.68539238),
165+
float2(0.31460676, 0.30336952),
166+
float2(0.32584271, 0.92134666),
167+
float2(0.33707866, 0.53932571),
168+
float2(0.34831461, 0.15730286),
169+
float2(0.35955057, 0.77528000),
170+
float2(0.37078652, 0.39325714),
171+
float2(0.38202247, 0.01123428),
172+
float2(0.39325842, 0.62921333),
173+
float2(0.40449437, 0.24719048),
174+
float2(0.41573033, 0.86516762),
175+
float2(0.42696628, 0.48314476),
176+
float2(0.43820226, 0.10112190),
177+
float2(0.44943821, 0.71910095),
178+
float2(0.46067417, 0.33707809),
179+
float2(0.47191012, 0.95505524),
180+
float2(0.48314607, 0.57303238),
181+
float2(0.49438202, 0.19100952),
182+
float2(0.50561798, 0.80898666),
183+
float2(0.51685393, 0.42696571),
184+
float2(0.52808988, 0.04494286),
185+
float2(0.53932583, 0.66292000),
186+
float2(0.55056179, 0.28089714),
187+
float2(0.56179774, 0.89887428),
188+
float2(0.57303369, 0.51685333),
189+
float2(0.58426964, 0.13483047),
190+
float2(0.59550560, 0.75280762),
191+
float2(0.60674155, 0.37078476),
192+
float2(0.61797750, 0.98876190),
193+
float2(0.62921351, 0.60673904),
194+
float2(0.64044946, 0.22471619),
195+
float2(0.65168542, 0.84269333),
196+
float2(0.66292137, 0.46067429),
197+
float2(0.67415732, 0.07865143),
198+
float2(0.68539327, 0.69662857),
199+
float2(0.69662923, 0.31460571),
200+
float2(0.70786518, 0.93258286),
201+
float2(0.71910113, 0.55056000),
202+
float2(0.73033708, 0.16853714),
203+
float2(0.74157304, 0.78651428),
204+
float2(0.75280899, 0.40449142),
205+
float2(0.76404494, 0.02246857),
206+
float2(0.77528089, 0.64044571),
207+
float2(0.78651685, 0.25842667),
208+
float2(0.79775280, 0.87640381),
209+
float2(0.80898875, 0.49438095),
210+
float2(0.82022470, 0.11235809),
211+
float2(0.83146065, 0.73033524),
212+
float2(0.84269661, 0.34831238),
213+
float2(0.85393256, 0.96628952),
214+
float2(0.86516851, 0.58426666),
215+
float2(0.87640452, 0.20224380),
216+
float2(0.88764048, 0.82022095),
217+
float2(0.89887643, 0.43820190),
218+
float2(0.91011238, 0.05617905),
219+
float2(0.92134833, 0.67415619),
220+
float2(0.93258429, 0.29213333),
221+
float2(0.94382024, 0.91011047),
222+
float2(0.95505619, 0.52808762),
223+
float2(0.96629214, 0.14606476),
224+
float2(0.97752810, 0.76404190),
225+
float2(0.98876405, 0.38201904)
226+
};
227+
136228
// Loads elements from one of the precomputed tables for sample counts of 21, 34, 55.
137229
// Computes sample positions at runtime otherwise.
138230
// Sample count must be a Fibonacci number (see 'k_FibonacciSeq').
@@ -143,6 +235,7 @@ float2 Fibonacci2d(uint i, uint sampleCount)
143235
case 21: return k_Fibonacci2dSeq21[i];
144236
case 34: return k_Fibonacci2dSeq34[i];
145237
case 55: return k_Fibonacci2dSeq55[i];
238+
case 89: return k_Fibonacci2dSeq89[i];
146239
default:
147240
{
148241
int fibN1 = sampleCount;

0 commit comments

Comments
 (0)