Tag: 几何体

射线和椭球相交准确度的提高

我需要在我的一个大气散射GLSL片段着色器中提高函数的精度,这个片段着色器计算单个光线和轴alignment的椭球之间的交点。 这是矿井大气散射着色器的核心function。 旧的原始着色器是在floats和正常渲染是好的,但增加缩放后,我发现,相对较小的距离精度丢失。 在浮标上,地球的可用距离只有0.005AU(天文单位)。 所以我试图移植的关键functiondouble ,这有助于现在可用的距离大约1.0 AU(具有小的文物) 这是Fragment Shader内部函数的double版本(旧式源代码使用不赞成的东西!!!) #extension GL_ARB_gpu_shader_fp64 : enable double abs(double x) { if (x<0.0) x=-x; return x; } // compute length of ray(p0,dp) to intersection with ellipsoid((0,0,0),r) -> view_depth_l0,1 // where rx is elipsoid rx^-2, ry = ry^-2 and rz=rz^-2 float view_depth_l0=-1.0,view_depth_l1=-1.0; bool _view_depth(vec3 _p0,vec3 _dp,vec3 _r) { double a,b,c,d,l0,l1; […]