@@ -106,15 +106,22 @@ fn fs_main(varyings: Varyings, @builtin(front_facing) is_front: bool) -> Fragmen
106106 let oc = ray_origin - center ;
107107 let b = dot (ray_dir , oc );
108108 let c = dot (oc , oc ) - radius * radius ;
109- let discriminant = b * b - c ;
109+ var discriminant = b * b - c ;
110110 if (discriminant < 0 .0 ) {
111- discard ;
111+ if (discriminant > - 1e-4 ) {
112+ discriminant = 0 .0 ;
113+ } else {
114+ discard ;
115+ }
112116 }
113117 let sqrt_disc = sqrt (discriminant );
114118 var t = - b - sqrt_disc ;
115119 if (t < 0 .0 ) {
116120 t = - b + sqrt_disc ;
117121 }
122+ if (t < 0 .0 ) {
123+ discard ;
124+ }
118125 let world_pos = ray_origin + ray_dir * t ;
119126 var world_normal = normalize (world_pos - center );
120127 if (! is_front ) {
@@ -132,7 +139,7 @@ fn fs_main(varyings: Varyings, @builtin(front_facing) is_front: bool) -> Fragmen
132139 diffuse_color . a *= u_material . opacity * mask ;
133140 do_alpha_test (diffuse_color . a );
134141
135- let physical_albeido = diffuse_color . rgb ;
142+ let physical_albedo = diffuse_color . rgb ;
136143 let specular_strength = 1 .0 ;
137144
138145 var reflected_light : ReflectedLight = ReflectedLight (
@@ -148,7 +155,7 @@ fn fs_main(varyings: Varyings, @builtin(front_facing) is_front: bool) -> Fragmen
148155 geometry . view_dir = view_dir ;
149156
150157 var material : BlinnPhongMaterial ;
151- material . diffuse_color = physical_albeido ;
158+ material . diffuse_color = physical_albedo ;
152159 material . specular_color = srgb2physical (u_material . specular_color . rgb );
153160 material . specular_shininess = u_material . shininess ;
154161 material . specular_strength = specular_strength ;
@@ -170,7 +177,7 @@ fn fs_main(varyings: Varyings, @builtin(front_facing) is_front: bool) -> Fragmen
170177 if (all (physical_color == vec3 <f32 >(0 .0 ))) {
171178 let fallback_light = normalize (vec3 <f32 >(0 .3 , 0 .5 , 0 .8 ));
172179 let fallback_diffuse = max (dot (world_normal , fallback_light ), 0 .0 );
173- physical_color = physical_albeido * clamp (0 .3 + 0 .7 * fallback_diffuse , 0 .0 , 1 .0 );
180+ physical_color = physical_albedo * clamp (0 .3 + 0 .7 * fallback_diffuse , 0 .0 , 1 .0 );
174181 }
175182
176183 var out : FragmentOutput ;
0 commit comments