Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 片段着色器不再在简单着色器测试中上载_Three.js - Fatal编程技术网

Three.js 片段着色器不再在简单着色器测试中上载

Three.js 片段着色器不再在简单着色器测试中上载,three.js,Three.js,不久前(想让我们试试浏览器)我做了一个小的three.js测试,它用两个自定义着色器绘制了一个四边形,供大家玩玩。撕下一些示例代码,放入着色器,瞧。我直接从Github嵌入了three.js,因此我当然容易遇到迁移问题:) 事情是这样的:在本周后再次访问之后,我的制服停止了工作(使用WebGL Inspector验证,它们都是零,而之前由three.js上传的制服仍然很好) 经WebGL检查员确认: 0 projectionMatrix 1 FLOAT_MAT4 [ 1.000

不久前(想让我们试试浏览器)我做了一个小的three.js测试,它用两个自定义着色器绘制了一个四边形,供大家玩玩。撕下一些示例代码,放入着色器,瞧。我直接从Github嵌入了three.js,因此我当然容易遇到迁移问题:)

事情是这样的:在本周后再次访问之后,我的制服停止了工作(使用WebGL Inspector验证,它们都是零,而之前由three.js上传的制服仍然很好)

经WebGL检查员确认:

0   projectionMatrix    1   FLOAT_MAT4  
[ 1.000000000,  0.000000000,  0.000000000,  0.000000000, 
  0.000000000,  1.000000000,  0.000000000,  0.000000000, 
  0.000000000,  0.000000000, -0.002000200,  0.000000000, 
  0.000000000,  0.000000000, -1.000200033,  1.000000000 ] 
1   modelViewMatrix 1   FLOAT_MAT4  
[ 1.000000000,  0.000000000,  0.000000000,  0.000000000, 
  0.000000000,  1.000000000,  0.000000000,  0.000000000, 
  0.000000000,  0.000000000,  1.000000000,  0.000000000, 
  0.000000000,  0.000000000, -0.100000001,  1.000000000 ]
2   u_resolution    1   FLOAT_VEC2  
    [ 0.000000000,  0.000000000 ]
3   u_time  1   FLOAT     0.000000000
4   u_aspectRatio   1   FLOAT     0.000000000
这里是“代码”(我在网络上的所有事情上都是个傻瓜,所以不要减少任何可能的冲动去指出其他愚蠢的事情=):


尝尝浏览器的味道!
画布{宽度:100%;高度:100%}
//可变vec2 v_UV;
void main(){
//vUV=紫外线;
gl_位置=projectionMatrix*modelViewMatrix*vec4(位置,1.0);
}
均匀浮点数;
均匀浮动u_时间;
均匀vec2u_分辨率;
//可变vec2 v_UV;
void main()
{
vec2p=-1.0+2.0*(gl_FragCoord.xy/u_分辨率);
//书中最便宜的把戏#1:隧道
浮点数r=sqrt(点(p,p));
浮动a=atan(p.y,p.x);//abs(a)/3.1416
浮花=r+0.2*sin(a*4.0+u_时间);
//书中最便宜的技巧#2:2D斑点
vec2 blob1=vec2(sin(u_时间*0.66),cos(u_时间*0.96));
vec2 blob2=vec2(cos(u_时间*0.75+1.4),sin(u_时间*0.4-3.0));
vec2 dist1=p-blob1;
vec2-dist2=p-blob2;
dist1*=2.0;dist2*=3.0;
浮动能量=1.0/点(dist1,dist1)+1.0/点(dist2,dist2);
能量=功率(能量,4.0);
gl_FragColor=vec4(能量、花、u_时间,1.0);
}
//初始化渲染器
var renderer=new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
//设置场景和摄影机
var scene=new THREE.scene();
var摄像机=新的三个正交摄像机(-1,1,1,-1,0.11000);
//设置制服
变量myc={
aspectRatio:{type:“f”,值:window.innerWidth/window.innerHeight},
时间:{type:“f”,值:0.0},
分辨率:{type:“v2”,值:new THREE.Vector2(window.innerWidth,window.innerHeight)}
};
//使用自定义着色器材质构建平面
变量几何=新的三个平面几何(2,2,1,1);
var material=新的3.ShaderMaterial(
{
制服:我的制服,
属性:null,
vertexShader:document.getElementById('vertexShader').textContent,
fragmentShader:document.getElementById('fragmentShader').textContent}
);
var平面=新的三个网格(几何体、材质);
场景。添加(平面);
//任何非零的都可以
摄像机位置z=0.1;
//创建计时器
var定时器=新的三个时钟(真);
//渲染循环函数。
函数render(){
//更新和渲染
myUniforms.time.value=timer.getElapsedTime();//%1.0;
渲染器。渲染(场景、摄影机);
//请求下一帧
请求动画帧(渲染);
}
render();
任何关于这方面的建议:非常欢迎


(是的,这是一个丑陋的着色器;)

您的变量名与着色器中的变量名不匹配

var myUniforms = { 
    u_aspectRatio: { type: "f", value: window.innerWidth/window.innerHeight },
    u_time: { type: "f", value: 0.0 },
    u_resolution: { type: "v2", value: new THREE.Vector2(window.innerWidth, window.innerHeight) }
};
var myUniforms = { 
    u_aspectRatio: { type: "f", value: window.innerWidth/window.innerHeight },
    u_time: { type: "f", value: 0.0 },
    u_resolution: { type: "v2", value: new THREE.Vector2(window.innerWidth, window.innerHeight) }
};