119 lines
3.2 KiB
JavaScript
119 lines
3.2 KiB
JavaScript
/**
|
|
* R3.D3.API.Composer
|
|
* @param apiComponent
|
|
*
|
|
* @property size
|
|
* @property renderer
|
|
* @property renderTarget - Specify this to render to target instead
|
|
* @property renderTargetA - Used internally during render process
|
|
* @property renderTargetB - Used internally during render process
|
|
* @property passes
|
|
*
|
|
* @constructor
|
|
*/
|
|
R3.D3.API.Composer = function(
|
|
apiComponent
|
|
) {
|
|
|
|
__API_COMPONENT__;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.size)) {
|
|
apiComponent.size = new R3.API.Vector2(
|
|
{
|
|
parent : this,
|
|
register : true,
|
|
name : this.name + ' - Size',
|
|
x : 512,
|
|
y : 512
|
|
}
|
|
);
|
|
}
|
|
this.size = apiComponent.size;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.renderer)) {
|
|
apiComponent.renderer = null;
|
|
}
|
|
this.renderer = apiComponent.renderer;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.camera)) {
|
|
apiComponent.camera = null;
|
|
}
|
|
this.camera = apiComponent.camera;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.rendererTarget)) {
|
|
apiComponent.rendererTarget = null;
|
|
}
|
|
this.rendererTarget = apiComponent.rendererTarget;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.rendererTargetA)) {
|
|
apiComponent.rendererTargetA = null;
|
|
}
|
|
this.rendererTargetA = apiComponent.rendererTargetA;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.renderTargetB)) {
|
|
apiComponent.renderTargetB = null;
|
|
}
|
|
this.renderTargetB = apiComponent.renderTargetB;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.passes)) {
|
|
|
|
var passes = [];
|
|
|
|
if (this.renderer && this.renderer.scenes) {
|
|
/**
|
|
* Construct default render passes
|
|
*/
|
|
passes = this.renderer.scenes.reduce(
|
|
function(result, scene) {
|
|
|
|
result.push(
|
|
new R3.D3.API.Pass.Render(
|
|
{
|
|
parent : this,
|
|
scene : scene,
|
|
name : this.name + ' - Render Pass',
|
|
camera : this.camera
|
|
}
|
|
)
|
|
);
|
|
|
|
return result;
|
|
}.bind(this),
|
|
[]
|
|
);
|
|
}
|
|
|
|
if (this.renderer) {
|
|
passes.push(
|
|
new R3.D3.API.Pass.Bloom(
|
|
{
|
|
parent: this,
|
|
name: this.name + ' - Bloom Pass',
|
|
renderer: this.renderer
|
|
}
|
|
)
|
|
);
|
|
}
|
|
|
|
if (this.renderer) {
|
|
passes.push(
|
|
new R3.D3.API.Pass.FXAA(
|
|
{
|
|
parent: this,
|
|
name: this.name + ' - FXAA Pass',
|
|
renderer: this.renderer
|
|
}
|
|
)
|
|
);
|
|
}
|
|
|
|
apiComponent.passes = passes;
|
|
|
|
}
|
|
this.passes = apiComponent.passes;
|
|
|
|
};
|
|
|
|
R3.D3.API.Composer.prototype = Object.create(R3.API.Component.prototype);
|
|
R3.D3.API.Composer.prototype.constructor = R3.D3.API.Composer;
|