Opengl GPU预计算逆优化

Opengl GPU预计算逆优化,opengl,glsl,shader,gpu,Opengl,Glsl,Shader,Gpu,我有以下代码(光线盒交点): float interBox(vec3 bmin、vec3 bmax、vec3 ro、vec3 rd){ vec3 t1=(bmin ro)/rd; vec3 t2=(b最大ro)/rd; 浮动tmin=min(t1.x,t2.x); 浮动tmax=最大值(t1.x,t2.x); tmin=最大值(tmin,最小值(t1.y,t2.y)); tmax=min(tmax,max(t1.y,t2.y)); tmin=最大值(tmin,最小值(t1.z,t2.z)); t

我有以下代码(光线盒交点):

float interBox(vec3 bmin、vec3 bmax、vec3 ro、vec3 rd){
vec3 t1=(bmin ro)/rd;
vec3 t2=(b最大ro)/rd;
浮动tmin=min(t1.x,t2.x);
浮动tmax=最大值(t1.x,t2.x);
tmin=最大值(tmin,最小值(t1.y,t2.y));
tmax=min(tmax,max(t1.y,t2.y));
tmin=最大值(tmin,最小值(t1.z,t2.z));
tmax=min(tmax,max(t1.z,t2.z));

返回(tmax tmin)差多少?差5%还是差100%?如何计算
rd
呢?谁说GLSL编译器还没有进行优化?这很简单。如果这是D3D,你可以看看编译器的更好版本的HLSL字节码,而不是你自己的优化尝试,无论你使用的是什么GPU。如果你使用的是NV GPU,GLSL program binary通常包含一个文本程序集,您可以查看一下……不过,我想知道它是否真的值得付出努力?@Mikhail~10-15%更糟。@Andon我在Linux上使用的是Nvidia GPU。如何获得此程序集?(如果这是唯一的方法,我可以使用Windows)。
float interBox(vec3 bmin, vec3 bmax, vec3 ro, vec3 rd){
vec3 t1 = (bmin-ro)/rd;
vec3 t2 = (bmax-ro)/rd;

float tmin = min(t1.x, t2.x);
float tmax = max(t1.x, t2.x);

tmin = max(tmin, min(t1.y, t2.y));
tmax = min(tmax, max(t1.y, t2.y));

tmin = max(tmin, min(t1.z, t2.z));
tmax = min(tmax, max(t1.z, t2.z));

return (tmax-tmin)<0? -1: tmin;