2013-11-05 2 views
1

Я хочу использовать GLSL-Unit, чтобы просто уменьшить фрагментарный шейдер. Но если я запустить эту команду:Используйте GLSL-Unit для компиляции фрагментарных шейдеров

sunbox$ glsl-compiler --input=/Users/sunbox/Sites/bessa-app/xyz.fshader 

я получаю эти сообщения об ошибках:

/usr/local/bin/glsl-compiler: line 1: syntax error near unexpected token `b' 
/usr/local/bin/glsl-compiler: line 1: `var COMPILED=true,goog=goog||{};goog.global=this;goog.DEBUG=true;goog.LOCALE="en";goog.provide=function(b){if(!COMPILED){if(goog.isProvided_(b))throw Error('Namespace "'+b+'" already declared.');delete goog.implicitNamespaces_[b];for(var f=b;f=f.substring(0,f.lastIndexOf("."));){if(goog.getObjectByName(f))break;goog.implicitNamespaces_[f]=true}}goog.exportPath_(b)};' 

Итак, как же я просто Минимизировать фрагмента шейдер?

ответ

3

Я, наконец, получил его работу. : D

Для всех, кто заинтересован, вам нужен этот файл: http://code.google.com/p/glsl-unit/source/browse/bin/template_glsl_compiler.js

... и NodeJS установлен. Затем добавить простой комментарий в файле шейдера:

//! FRAGMENT 

precision lowp float; 
uniform sampler2D image; 
varying vec2 src_position; 
void main() { 
    gl_FragColor = texture2D(image, src_position); 
} 

... и раздражающе вы должны использовать расширение файла .glsl! :( Теперь вы можете запустить эту команду:

sunbox$ node /Volumes/template_glsl_compiler.js --input=/Volumes/test.glsl --variable_renaming=INTERNAL --output=/Volumes/test.fshader.min 

И это его Составитель выход будет:.

//! VERTEX 

//! FRAGMENT 
precision lowp float;uniform sampler2D image;varying vec2 a;void main(){gl_FragColor=texture2D(image,a);} 

Действительно хороший :)

+0

Почему использует '.glsl' раздражает!? Предоставленный GLSL не имеет официального расширения файла (учитывая, что OpenGL не использует файлы), но '.glsl', вероятно, является самым близким. Большинство текстовых редакторов, включая vim, будут выделять файлы '.glsl', но не' .fshader' или '.vshader', или' .gshader' или '.tshader'. Давным-давно я принял политику '_vs.glsl' для шейдеров vtx,' _fs.glsl' для фрагмента, '_gs.glsl' для геометрии,' _tes.glsl' для tess. eval., '_tcs.glsl' для tess. контроль. Таким образом, вы можете быстро определить, какой шейдер для какой стадии, и извлечь выгоду из подсветки синтаксиса. –

+0

Это раздражает, потому что официального расширения файла нет. Почему они заставляют меня использовать '.glsl'? Я использую '.fshader' и' .vshader' для всех своих шейдеров, потому что официального расширения файла нет. Теперь я должен использовать это для '_fs.glsl' и' _vs.glsl'. Простое изменение неподдерживаемого расширения файла на другое неподдерживаемое расширение файла раздражает меня. –

Смежные вопросы