#ifdef USE_ALPHAMAP
diffuseColor.a *= texture2D( alphaMap, vUv ).g;
#endif
glslだ・・・。
確かに、build.js内で拡張子がglslのファイルだけ別処理になっている。
if( file.indexOf( '.glsl') >= 0 ) {
contents = 'THREE.ShaderChunk[ \'' +
path.basename( file, '.glsl' ) + '\' ] =' +
JSON.stringify( contents ) + ';\n';
}
ちょっとgulpのフィルタを作りますか。
three.shaderchunk.js
var through = require('through2');
var gutil = require('gulp-util');
var fs = require('fs');
var path = require('path');
module.exports = function () {
return through.obj(function (file, enc, cb) {
if (file.isStream()) {
cb(new gutil.PluginError('three.shadechunk', 'Streaming not supported'));
return;
}
if (path.extname(file.path).toLowerCase() == '.glsl') {
var contents = 'THREE.ShaderChunk[ \'' +
path.basename(file.path, '.glsl') + '\' ] =' +
JSON.stringify(file.contents.toString()) + ';\n';
file.contents = new Buffer(contents);
file.path = file.path + ".js";
}
this.push(file);
cb();
});
}
gulpファイルの呼び出しの方。これでthree.js/srcからthree.jsを作成できた。
あとは、sourcemapが付くようにした。
gulpfile.js
gulp.task('threejs:build', function(){
var common=JSON.parse(fs.readFileSync('three.js/includes/common.json'))
.map(function(v, i){ return 'three.js/'+v; });
var extras=JSON.parse(fs.readFileSync('three.js/includes/extras.json'))
.map(function(v, i){ return 'three.js/'+v; });
gulp.src(common.concat(extras))
.pipe(threeShaderchunk())
.pipe($.concat('three.js'))
.pipe(gulp.dest('./lib'))
;
});
FireFoxでブレイクポイントを仕掛けてステップ実行できた。
これで、Loaderの自作とかが捗るぞ。