我正在使用此处的 Classic Perlin Noise (vec3) 函数。
当我在我的 MacBook 上渲染这个着色器时,着色器运行良好,并将噪声显示为我期望的颜色。
当我在 iPhone 上渲染这个着色器时,画布是全黑的。
这段代码有什么问题会导致cnoise函数总是返回 0 吗?或者是否有一些功能不适用于 Metal?
这是完整的着色器:
#ifdef GL_ES
precision mediump float;
#endif
uniform vec2 u_resolution;
uniform float u_time;
vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}
vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}
vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}
float cnoise(vec3 P){
vec3 Pi0 = floor(P); // Integer part for indexing
vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1
Pi0 = mod(Pi0, 289.0);
Pi1 = …Run Code Online (Sandbox Code Playgroud)