【发布时间】:2019-02-16 22:34:28
【问题描述】:
在我的 GLSL 代码中,我有多次调用大型函数。
例如,在我的 perlin 噪声函数中,我多次运行哈希函数。
float perlinNoise (...) {
...
float x0y0z0 = pcgUnit3(seedminX,seedminY,seedminZ);
float x0y0z1 = pcgUnit3(seedminX,seedminY,seedmaxZ);
float x0y1z0 = pcgUnit3(seedminX,seedmaxY,seedminZ);
float x0y1z1 = pcgUnit3(seedminX,seedmaxY,seedmaxZ);
float x1y0z0 = pcgUnit3(seedmaxX,seedminY,seedminZ);
float x1y0z1 = pcgUnit3(seedmaxX,seedminY,seedmaxZ);
float x1y1z0 = pcgUnit3(seedmaxX,seedmaxY,seedminZ);
float x1y1z1 = pcgUnit3(seedmaxX,seedmaxY,seedmaxZ);
...
}
在我的程序生成算法中,我多次调用 perlin 噪声函数。
我注意到,每次我添加对 perlin 噪声函数的调用时,着色器的编译时间都需要更长的时间。我认为问题在于 glsl 内联函数调用,因此着色器代码变得非常大。
我对内联是否正确,如果正确,我该如何防止它发生?
【问题讨论】: