Three.jsとシェーダー 〜実際に描画してみる〜
ドキュメントを読んでなんとなく雰囲気がわかってきたので実際に描画してみようと思います。
適当にカメラとシーンとライトを用意して、三角形のポリゴンを描画してみたいと思います。
カメラとかシーンの準備は割愛してジオミトリとマテリアルを用意するところだけになります。
まずはジオミトリの準備。
function geo(){
let g = new THREE.BufferGeometry();
let vert = new Float32Array([
1.0,0.0,0.0,
0.0,1.0,0.0,
0.0,0.0,1.0
])
g.addAttribute('position',new THREE.BufferAttribute(vert,3))
return g;
}
関数化してあるのはいじるときに見やすくしやすかったからです。
自作シェーダーを使うためにはBufferGeometryを使用することになります。
また、BufferGeometryにattribute(頂点ごとに異なった値を持つデータ)を追加するときにはaddAttributeメソッドを使う必要が出てくるので使用しています。
次にShaderの方です。
let shade_par={
uniforms:{
"time":{value:1.0}
},
vertexShader:[
"precision mediump float;",
"void main(){",
"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
"}"
].join("\n"),
fragmentShader:[
"precision mediump float;",
"void main(){",
"gl_FragColor = vec4(0.0,1.0,0.0,1.0);",
"}"
].join("\n"),
side: THREE.DoubleSide,
transparent: true
}
uniformsにtimeをなんとなく渡していますが今回は使っていません(そのうち時間変化とかをさせようと思っています。)
今回は特に処理はせず、色を緑にする処理だけしています。
できたもの
予想通りの結果です。基礎はこれでなんとか確認できたので次は時間で見た目を変えたり座標によるグラデーションを試したりしたいと思います。
Author And Source
この問題について(Three.jsとシェーダー 〜実際に描画してみる〜), 我々は、より多くの情報をここで見つけました https://qiita.com/mosamosa/items/c5bdae37e7fcd5feac53著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .