我以前从未写过着色器,现在我正在尝试在OS X和iOS上使用SceneKit实现SSAO。我正在尝试找到的不同SSAO着色器,例如

在OS X上,它们都可以正常工作,但是在iPhone上,它们都给了我相同的伪像(图像仅显示SSAO通过)。当我移动相机时,线条会移动。因此,这一定是由于OpenGL ES的某些差异。有人知道怎么了吗?



#1 楼

通过在我的着色器中添加precision highp sampler2D来解决。

关于ES上的默认精度设置-https://www.khronos.org/files/opengles_shading_language.pdf第36页。

评论


$ \ begingroup $
出于好奇,以前的精度是多少?低还是中?
$ \ endgroup $
–西蒙F
16 Mar 9 '16 at 9:33

$ \ begingroup $
我发现一个文档说,在ES上,默认情况下采样率较低,而float / int较高。哦,整数取决于着色器类型,我已经在我的答案中添加了链接。
$ \ endgroup $
– pronvit
16 Mar 9 '16 at 21:16



$ \ begingroup $
好。只是想知道您是否尝试过mediump,因为这样做可能会带来性能(和功耗)优势。
$ \ endgroup $
–西蒙F
16 Mar 10 '16 at 12:30

$ \ begingroup $
mediump对我的情况没有帮助,而且我也没有注意到任何明显的性能差异。
$ \ endgroup $
– pronvit
16-3-14在21:22