そのへんのサンプルをみるとシェーダーがHTMLに直接書いてある
sample.html
<script id="vertexShader" type="x-shader/x-vertex">
uniform float hoge;
void main() {
float fuga = 1;
gl_Position = projectionMatrix * modelViewMatrix;
}
</script>
こんな感じでHTMLに埋め込まれている。
- いちいちhtmlを触らないといけない
- → 再利用性がない
- シンタックスハイライトもないので、開発がめんどくさい。
別ファイルにしよう
2つの戦略がある。
外部ファイルにするShaderファイルを作成し
- jsでロードする
- JadeなどでHTMLに埋め込む
ここではJSでロードすると単純にめんどくさいのと、ロード時間が増えて、メリットがなさげなのでやめておく。
Jadeでの埋め方
jadeと同じ階層のtest.vert
ファイルを埋め込む
script#vertexShader(type='x-shader/x-vertex')
include test.vert
Slimでの埋め方
source/shader/hoge.vert
ファイルを埋め込む
script#vertexShader type="x-shader/x-vertex"
== File.read('./source/shader/hoge.vert')
ちなみにGLSLシェーダーファイルの拡張子は .vert
, .frag
特に拡張子の指定はないが、慣習的にこうなってるらしい。
.vert
.frag
.vs
, .fs
としている派閥もいるらしい。
.vert
, .frag
のシンタックスカラーはC/C++
などにしとくとよし
GLSLはC言語をベースとしているらしいので、それでいいんじゃないかな!?
IntelliJ IDEAだとプラグインあり
- GLSL Supportっていうのがあるので、それをインストール
- [Settings] → [File Types] → [OpenGL Shadeing...]で
*.vert
,*.frag
追加
でOK!
だけど、シンタックスハイライトがうまく設定できなくて、ちょっときもちわるい。