Three.js 将脚本着色器转换为js着色器
穿上制服Three.js 将脚本着色器转换为js着色器,three.js,Three.js,穿上制服 uniforms: { "time": { type: "f", value: 0.0 } }, 你在哪里 属性浮动频率; 属性vec3自定义颜色;走?tia(刚刚添加了我试图转换的代码) 并且找不到使用顶点属性的示例。tia这个问题不是很清楚,但我相信你对基本概念有点困惑 着色器不应转换为javascript。它们是用GLSL语言编写的,浏览器也能理解并传递给显示驱动程序 统一是在Javascript代码和GLSL着色器之间传递变量的方式。因此,您只需要关心Javas
uniforms: {
"time": { type: "f", value: 0.0 }
},
你在哪里
属性浮动频率;
属性vec3自定义颜色;走?tia(刚刚添加了我试图转换的代码)
并且找不到使用顶点属性的示例。tia这个问题不是很清楚,但我相信你对基本概念有点困惑 着色器不应转换为javascript。它们是用GLSL语言编写的,浏览器也能理解并传递给显示驱动程序
统一是在Javascript代码和GLSL着色器之间传递变量的方式。因此,您只需要关心Javascript端的制服。着色器脚本中的其他代码是着色器GLSL代码的一部分,不能与javascript共享或转换为javascript,如果要对其进行更改,则需要修改着色器本身。Lee Stemkoski善意地提供了以下答案:
THREE.BasicShader = {
uniforms: {},
vertexShader: [
"uniform float time;",
"attribute float customFrequency;",
"attribute vec3 customColor;",
"varying vec3 vColor;",
"void main()",
"{",
"vColor = customColor;",
"vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
"gl_PointSize = (1.0 + sin( customFrequency * time )) * 8.0 * ( 300.0 / length( mvPosition.xyz ) );",
"gl_Position = projectionMatrix * mvPosition;",
"}"
].join("\n"),
fragmentShader:
[
((similar to above))
].join(“\n”)
这里没有问题。ah为没有花时间正确表述问题而道歉:-(需要将上述着色器脚本转换为格式:oops-return key!=新行:-(
THREE.BasicShader = {
uniforms: {},
vertexShader: [
"void main() {",
"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
"}"
].join("\n"),
fragmentShader: [
"void main() {",
"gl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );",
"}"
].join("\n")
};
THREE.BasicShader = {
uniforms: {},
vertexShader: [
"uniform float time;",
"attribute float customFrequency;",
"attribute vec3 customColor;",
"varying vec3 vColor;",
"void main()",
"{",
"vColor = customColor;",
"vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
"gl_PointSize = (1.0 + sin( customFrequency * time )) * 8.0 * ( 300.0 / length( mvPosition.xyz ) );",
"gl_Position = projectionMatrix * mvPosition;",
"}"
].join("\n"),
fragmentShader:
[
((similar to above))
};