Я пытаюсь протестировать простой точечный шейдер в ThreeJS от 2pha: https://2pha.com/demos/threejs/shaders/simple_dots.html
Кажется, он не работает должным образом для метаболов, использующих Марширующие кубы: https://threejs.org/examples/webgl_marchingcubes.html.
Это проблема с УФ-координатами? Версия ThreeJS имеет флаг enableUvs
, но этого недостаточно.
Здесь шейдер перешел на ShaderMaterial
'polkadots' : {
uniforms: {
"amount":{type: "f",value: 5.},
"radius1":{type: "f",value: 0.3},
"radius2":{type: "f",value: 0.32},
"color1":{type:"c",value: new THREE.Color(0xffffff)},
"color2":{type:"c",value: new THREE.Color(0x000000)},
},
vertexShader: [
"varying vec2 vUv;",
"void main() {",
"vUv = uv;",
"vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
"gl_Position = projectionMatrix * mvPosition;",
"}",
].join( "\n" ),
fragmentShader: [
"uniform vec3 color1;",
"uniform vec3 color2;",
"uniform float radius1;",
"uniform float radius2;",
"uniform float amount;",
"varying vec2 vUv;",
"void main(void){",
"float p = smoothstep(radius1, radius2, length(fract(amount*vUv)-0.5));",
"vec3 col = mix(color1,color2,vec3(p));",
"gl_FragColor = vec4(col,1.0);",
"}",
].join( "\n" )
}