|
@@ -90,9 +90,7 @@ class Default extends Base {
|
|
|
@:privateAccess p.obj.draw(ctx);
|
|
|
}
|
|
|
|
|
|
- static public dynamic function onShaderError(e: Dynamic, p: PassObject) {
|
|
|
- throw e;
|
|
|
- }
|
|
|
+ public static var onShaderError : Dynamic -> PassObject -> Void;
|
|
|
|
|
|
@:access(h3d.scene)
|
|
|
override function draw( passes : h3d.pass.PassList, ?sort : h3d.pass.PassList -> Void ) {
|
|
@@ -116,11 +114,15 @@ class Default extends Base {
|
|
|
globalModelViewInverse = p.obj.getInvPos();
|
|
|
if( prevShader != p.shader ) {
|
|
|
prevShader = p.shader;
|
|
|
- try {
|
|
|
+ if( onShaderError != null ) {
|
|
|
+ try {
|
|
|
+ ctx.engine.selectShader(p.shader);
|
|
|
+ } catch(e : Dynamic) {
|
|
|
+ onShaderError(e, p);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
ctx.engine.selectShader(p.shader);
|
|
|
- } catch(e : Dynamic) {
|
|
|
- onShaderError(e, p);
|
|
|
- continue;
|
|
|
}
|
|
|
if( buf == null )
|
|
|
buf = ctx.shaderBuffers = new h3d.shader.Buffers(p.shader);
|