0

我在着色器中对颜色中的值进行编码,并得到了一些意想不到的结果。我已经将其提炼为这个小提琴中概述的情况,其中从纹理(sampler2D)中获取颜色会产生不同的结果,而不是明确指定完全相同的颜色作为 vec4。

vec4 c = method1(v_texcoord);//explicitly create color
vec4 px = method2(v_texcoord);//grab color from image

//confirm that these are the same value
if (px!=c) return; 

如果我们直接使用 c ,我们会得到与使用 px 不同的结果——即使我们刚刚确认它们是完全相同的值。

代码中的以下行是没有意义的,因为这些值是相等的(刚刚在上面检查过)。但是评论/取消评论这一行会产生不同的结果。

//c = px; //uncomment = red light; comment out = green light

在下面的小提琴中自己尝试一下:

https://jsfiddle.net/9zo5fpd0/31/

我尝试了不同的精度级别以及从图像构造颜色的不同方法 - 但唯一的区别似乎是源是否是图像本身。我对运行着色器代码的 GPU 的内部工作原理的了解有限,所以我不知道这两种方法的本质区别是什么。任何帮助,将不胜感激。

4

0 回答 0