mirror of
https://github.com/photonstorm/phaser
synced 2024-11-26 14:40:38 +00:00
Starting core renderer
This commit is contained in:
parent
a30675d1fd
commit
b05d7f5481
4 changed files with 204 additions and 11 deletions
|
@ -124,12 +124,6 @@ var Layer3DScene = new Class({
|
||||||
renderList.add(object, camera);
|
renderList.add(object, camera);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (object.type === OBJECT_TYPE.CANVAS2D)
|
|
||||||
// {
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Handle children by recursion
|
|
||||||
var children = object.children;
|
var children = object.children;
|
||||||
|
|
||||||
for (var i = 0; i < children.length; i++)
|
for (var i = 0; i < children.length; i++)
|
||||||
|
@ -150,11 +144,6 @@ var Layer3DScene = new Class({
|
||||||
this.lights.add(object);
|
this.lights.add(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (object.type === OBJECT_TYPE.CANVAS2D)
|
|
||||||
// {
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
var children = object.children;
|
var children = object.children;
|
||||||
|
|
||||||
for (var i = 0; i < children.length; i++)
|
for (var i = 0; i < children.length; i++)
|
||||||
|
|
39
src/layer3d/render/RenderTargetBack.js
Normal file
39
src/layer3d/render/RenderTargetBack.js
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
/**
|
||||||
|
* @author Richard Davey <rich@photonstorm.com>
|
||||||
|
* @copyright 2020 Photon Storm Ltd.
|
||||||
|
* @license {@link https://opensource.org/licenses/MIT|MIT License}
|
||||||
|
*/
|
||||||
|
|
||||||
|
var Class = require('../../utils/Class');
|
||||||
|
var RenderTargetBase = require('./RenderTargetBase');
|
||||||
|
|
||||||
|
var RenderTargetBack = new Class({
|
||||||
|
|
||||||
|
Extends: RenderTargetBase,
|
||||||
|
|
||||||
|
initialize:
|
||||||
|
|
||||||
|
function RenderTargetBack (view)
|
||||||
|
{
|
||||||
|
RenderTargetBase.call(this, view.width, view.height);
|
||||||
|
|
||||||
|
this.view = view;
|
||||||
|
},
|
||||||
|
|
||||||
|
resize: function (width, height)
|
||||||
|
{
|
||||||
|
this.view.width = width;
|
||||||
|
this.view.height = height;
|
||||||
|
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
},
|
||||||
|
|
||||||
|
dispose: function ()
|
||||||
|
{
|
||||||
|
// TODO - Event?
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = RenderTargetBack;
|
43
src/layer3d/render/RenderTargetBase.js
Normal file
43
src/layer3d/render/RenderTargetBase.js
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
/**
|
||||||
|
* @author Richard Davey <rich@photonstorm.com>
|
||||||
|
* @copyright 2020 Photon Storm Ltd.
|
||||||
|
* @license {@link https://opensource.org/licenses/MIT|MIT License}
|
||||||
|
*/
|
||||||
|
|
||||||
|
var Class = require('../../utils/Class');
|
||||||
|
|
||||||
|
var RenderTargetBase = new Class({
|
||||||
|
|
||||||
|
initialize:
|
||||||
|
|
||||||
|
function RenderTargetBase (width, height)
|
||||||
|
{
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
|
||||||
|
this.isRenderTarget = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
resize: function (width, height)
|
||||||
|
{
|
||||||
|
if (this.width !== width || this.height !== height)
|
||||||
|
{
|
||||||
|
this.dispose();
|
||||||
|
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
dispose: function ()
|
||||||
|
{
|
||||||
|
// TODO - Event?
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = RenderTargetBase;
|
122
src/layer3d/render/Renderer.js
Normal file
122
src/layer3d/render/Renderer.js
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
/**
|
||||||
|
* @author Richard Davey <rich@photonstorm.com>
|
||||||
|
* @copyright 2020 Photon Storm Ltd.
|
||||||
|
* @license {@link https://opensource.org/licenses/MIT|MIT License}
|
||||||
|
*/
|
||||||
|
|
||||||
|
var Class = require('../../utils/Class');
|
||||||
|
var RenderTargetBack = require('./RenderTargetBack');
|
||||||
|
|
||||||
|
var Renderer = new Class({
|
||||||
|
|
||||||
|
initialize:
|
||||||
|
|
||||||
|
function Renderer (scene)
|
||||||
|
{
|
||||||
|
this.scene = scene;
|
||||||
|
|
||||||
|
this.gl = scene.sys.renderer.gl;
|
||||||
|
|
||||||
|
this.backRenderTarget = new RenderTargetBack(scene.sys.renderer.canvas);
|
||||||
|
|
||||||
|
this.shadowMapPass;
|
||||||
|
|
||||||
|
this.shadowAutoUpdate = false;
|
||||||
|
this.shadowNeedsUpdate = false;
|
||||||
|
|
||||||
|
this.matrixAutoUpdate = true;
|
||||||
|
this.lightsAutoUpdate = true;
|
||||||
|
this.autoClear = true;
|
||||||
|
|
||||||
|
/*
|
||||||
|
var properties = new WebGLProperties();
|
||||||
|
|
||||||
|
this.properties = properties;
|
||||||
|
|
||||||
|
var capabilities = new WebGLCapabilities(gl);
|
||||||
|
|
||||||
|
this.capabilities = capabilities;
|
||||||
|
|
||||||
|
var state = new WebGLState(gl, capabilities);
|
||||||
|
|
||||||
|
this.state = state;
|
||||||
|
|
||||||
|
var vertexArrayBindings = new WebGLVertexArrayBindings(gl, properties, capabilities);
|
||||||
|
|
||||||
|
this.vertexArrayBindings = vertexArrayBindings;
|
||||||
|
|
||||||
|
var texture = new WebGLTexture(gl, state, properties, capabilities);
|
||||||
|
|
||||||
|
this.texture = texture;
|
||||||
|
|
||||||
|
var renderBuffer = new WebGLRenderBuffer(gl, properties, capabilities);
|
||||||
|
|
||||||
|
this.renderTarget = new WebGLRenderTarget(gl, state, texture, renderBuffer, properties, capabilities);
|
||||||
|
|
||||||
|
this.geometry = new WebGLGeometry(gl, state, vertexArrayBindings, properties, capabilities);
|
||||||
|
|
||||||
|
this.programs = new WebGLPrograms(gl, state, capabilities);
|
||||||
|
|
||||||
|
this._usedTextureUnits = 0;
|
||||||
|
*/
|
||||||
|
},
|
||||||
|
|
||||||
|
render: function (scene, camera, renderTarget, forceClear)
|
||||||
|
{
|
||||||
|
if (renderTarget === undefined) { renderTarget = this.backRenderTarget; }
|
||||||
|
|
||||||
|
if (this.matrixAutoUpdate)
|
||||||
|
{
|
||||||
|
scene.updateMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.lightsAutoUpdate)
|
||||||
|
{
|
||||||
|
scene.updateLights();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (this.shadowAutoUpdate || this.shadowNeedsUpdate)
|
||||||
|
{
|
||||||
|
this.shadowMapPass.render(this.glCore, scene);
|
||||||
|
|
||||||
|
this.shadowNeedsUpdate = false;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// this.renderTarget.setRenderTarget(renderTarget);
|
||||||
|
|
||||||
|
if (this.autoClear || forceClear)
|
||||||
|
{
|
||||||
|
this.clear(true, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
var renderList = scene.updateRenderList(camera);
|
||||||
|
|
||||||
|
// TODO - Avoid object creation each frame:
|
||||||
|
this.renderPass(renderList.opaque, camera, {
|
||||||
|
scene: scene,
|
||||||
|
getMaterial: function (renderable)
|
||||||
|
{
|
||||||
|
return scene.overrideMaterial || renderable.material;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO - Avoid object creation each frame:
|
||||||
|
this.renderPass(renderList.transparent, camera, {
|
||||||
|
scene: scene,
|
||||||
|
getMaterial: function (renderable)
|
||||||
|
{
|
||||||
|
return scene.overrideMaterial || renderable.material;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (renderTarget.texture)
|
||||||
|
{
|
||||||
|
renderTarget.updateRenderTargetMipmap(renderTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = Renderer;
|
Loading…
Reference in a new issue