首页 > 解决方案 > 如何创建基于对象的渐变着色器,而不是纹理或面?

问题描述

我想要一个基于整个对象而不是它的面或纹理的渐变。我想要第一张图像,而不是第二张每张脸都有单独渐变的图像。

我在材质上使用 SceneKit 和一个简单的着色器。如果我使用 Y 的_surface.position;结果会根据视图发生变化。无论它在视图/相机中的哪个位置,我都希望它在对象上。如何获得几何的 Y 值?还是有其他方法?

这就是我获得对象渐变的方式,但是当相机移动时它会移动(参见与第一张图像相比的最后一张图像)

vec3 p = _surface.position; 
_surface.diffuse = vec4(0.5,p.y,0.5,1);

另一种是基于vec2 uv = _surface.diffuseTexcoord; 但只是每张脸。

vec2 uv = _surface.diffuseTexcoord;
_surface.diffuse = vec4(0.5,uv.y,0.5,1);

谢谢

像这样 不喜欢这样 搬家了

标签: ios3dglslshaderscenekit

解决方案


推荐阅读