r3-legacy/src/r3-d3-api-composer.js

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;