File indexing completed on 2026-04-09 07:48:54
0001 #pragma once
0002
0003 LEAF_FUNC
0004 float distance_leaf_plane( const float3& pos, const quad& q0 )
0005 {
0006 const float3 n = make_float3(q0.f.x, q0.f.y, q0.f.z) ;
0007 const float d = q0.f.w ;
0008 float pn = dot(pos, n );
0009 float sd = pn - d ;
0010 return sd ;
0011 }
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065 LEAF_FUNC
0066 void intersect_leaf_plane( bool& valid_isect, float4& isect, const quad& q0, const float t_min, const float3& ray_origin, const float3& ray_direction )
0067 {
0068 const float3 n = make_float3(q0.f.x, q0.f.y, q0.f.z) ;
0069 const float d = q0.f.w ;
0070
0071 float idn = 1.f/dot(ray_direction, n );
0072 float on = dot(ray_origin, n );
0073
0074 float t_cand = (d - on)*idn ;
0075
0076 bool valid_isect = t_cand > t_min ;
0077 if( valid_isect )
0078 {
0079 isect.x = n.x ;
0080 isect.y = n.y ;
0081 isect.z = n.z ;
0082 isect.w = t_cand ;
0083 }
0084 }
0085
0086
0087