Skip to content

Commit 3321787

Browse files
committed
Use x and y dimension for lod selection in raycaster
1 parent f0a02dc commit 3321787

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

palace-core/src/operators/raycaster/raycaster.glsl

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,12 @@ void main()
196196
float t_end = distance(start, end);
197197
vec3 dir = normalize(end - start);
198198

199-
float start_pixel_dist = abs(dot(dir_x, eep_x.entry - eep.entry));
200-
float end_pixel_dist = abs(dot(dir_x, eep_x.exit - eep.exit));
199+
vec3 entry_diff = eep_x.entry - eep.entry;
200+
vec3 exit_diff = eep_x.exit - eep.exit;
201+
float start_pixel_dist_x = abs(dot(dir_x, entry_diff));
202+
float end_pixel_dist_x = abs(dot(dir_x, exit_diff));
203+
float start_pixel_dist_y = abs(dot(dir_y, entry_diff));
204+
float end_pixel_dist_y = abs(dot(dir_y, exit_diff));
201205

202206

203207
float lod_coarseness = consts.lod_coarseness;
@@ -207,16 +211,16 @@ void main()
207211
uint64_t prev_sample_brick_pos = 0xffffffffffffffffL;
208212
while(t <= t_end) {
209213
float alpha = t/t_end;
210-
float pixel_dist = start_pixel_dist * (1.0-alpha) + end_pixel_dist * alpha;
214+
float pixel_dist_x = start_pixel_dist_x * (1.0-alpha) + end_pixel_dist_x * alpha;
215+
float pixel_dist_y = start_pixel_dist_y * (1.0-alpha) + end_pixel_dist_y * alpha;
211216

212217
while(level_num < NUM_LEVELS - 1) {
213218
uint next = level_num+1;
214219
vec3 next_spacing = to_glsl_vec3(vol.levels[next].spacing);
215220
float left_spacing_dist = length(abs(dir_x) * next_spacing);
216221
float top_spacing_dist = length(abs(dir_y) * next_spacing);
217-
float spacing_dist = min(left_spacing_dist, top_spacing_dist);
218222

219-
if(spacing_dist >= pixel_dist * lod_coarseness) {
223+
if(left_spacing_dist >= pixel_dist_x * lod_coarseness || top_spacing_dist >= pixel_dist_y * lod_coarseness) {
220224
break;
221225
}
222226
level_num = next;

0 commit comments

Comments
 (0)