Skip to content

Commit aec64ad

Browse files
authored
Merge pull request #61 from Looooong/improve-cone-tracing-direction-selection
Improve cone tracing direction selection
2 parents ffb592b + d667d15 commit aec64ad

File tree

4 files changed

+13
-6
lines changed

4 files changed

+13
-6
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111

1212
- Added indirect lighting modifier.
1313

14+
### Changed
15+
16+
- Improved cone tracing direction selection.
17+
- Removed cone tracing bias.
18+
1419
### Fixed
1520

1621
- Fixed the gizmos being drawn in Game View.

ShaderLibrary/Radiances/Pixel.cginc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
float3 unit = Directions[i];
8181
float NdotL = dot(data.vecN, unit);
8282

83-
if (NdotL <= 0.0) continue;
83+
if (NdotL < ConeDirectionThreshold) continue;
8484

8585
float4 incoming = 0.0;
8686
float size = 1.0;
@@ -89,7 +89,7 @@
8989
for (
9090
float3 coordinate = apex + direction;
9191
incoming.a < 0.95 && TextureSDF(coordinate) > 0.0;
92-
size *= 1.5, direction *= 1.5, coordinate = apex + direction
92+
size *= 2.0, direction *= 2.0, coordinate = apex + direction
9393
) {
9494
incoming += 0.5 * (1.0 - incoming.a) * SampleRadiance(coordinate, size);
9595
}
@@ -98,6 +98,6 @@
9898
cones++;
9999
}
100100

101-
return data.diffuseColor * radiance * 2.0 / cones;
101+
return data.diffuseColor * radiance / cones;
102102
}
103103
#endif

ShaderLibrary/Radiances/Voxel.cginc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
float3 unit = Directions[i];
5656
float NdotL = dot(data.vecN, unit);
5757

58-
if (NdotL <= 0.0) continue;
58+
if (NdotL < ConeDirectionThreshold) continue;
5959

6060
float4 incoming = 0.0;
6161
float size = 1.0;
@@ -64,7 +64,7 @@
6464
for (
6565
float3 coordinate = apex + direction;
6666
incoming.a < 0.95 && TextureSDF(coordinate) > 0.0;
67-
size *= 1.5, direction *= 1.5, coordinate = apex + direction
67+
size *= 2.0, direction *= 2.0, coordinate = apex + direction
6868
) {
6969
incoming += 0.5 * (1.0 - incoming.a) * SampleRadiance(coordinate, size);
7070
}
@@ -73,7 +73,7 @@
7373
cones++;
7474
}
7575

76-
return radiance * 2.0 / cones;
76+
return radiance / cones;
7777
}
7878

7979
float3 VoxelRadiance(VoxelLightingData data)

ShaderLibrary/Variables.cginc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
SamplerState linear_clamp_sampler;
1212
StructuredBuffer<LightSource> LightSources;
1313

14+
static float ConeDirectionThreshold = sin(atan(1.0/3.0));
15+
1416
// Cone tracing direction for indirect diffuse calculations
1517
static float3 Directions[32] = {
1618
float3(+0.000000, +1.000000, +0.000000),

0 commit comments

Comments
 (0)