Skip to content

Commit

Permalink
wip shador
Browse files Browse the repository at this point in the history
  • Loading branch information
aardgoose committed Sep 22, 2023
1 parent 786bcff commit 81a6080
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 25 deletions.
6 changes: 6 additions & 0 deletions examples/jsm/nodes/lighting/AnalyticLightNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@ class AnalyticLightNode extends LightingNode {
shadowCoord.z.add( bias ).mul( 2 ).sub( 1 ) // WebGPU: Convertion [ 0, 1 ] to [ - 1, 1 ]
);

shadowCoord = vec3(
shadowCoord.x,
shadowCoord.y.oneMinus(), // WebGPU: Flip Y
shadowCoord.z//.add( bias ) // .mul( 2 ).sub( 1 ) // WebGPU: Convertion [ 0, 1 ] to [ - 1, 1 ]
);

const textureCompare = ( depthTexture, shadowCoord, compare ) => texture( depthTexture, shadowCoord ).compare( compare );
//const textureCompare = ( depthTexture, shadowCoord, compare ) => compare.step( texture( depthTexture, shadowCoord ) );

Expand Down
4 changes: 2 additions & 2 deletions examples/jsm/renderers/common/Renderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ class Renderer {
const renderContext = this._renderContexts.get( scene, camera, renderTarget );
const activeCubeFace = this._activeCubeFace;
const activeMipmapLevel = this._activeMipmapLevel;

this._lastRenderContext = this._currentRenderContext;
this._currentRenderContext = renderContext;

nodeFrame.renderId ++;
Expand Down Expand Up @@ -327,12 +327,12 @@ class Renderer {

// finish render pass

this._currentRenderContext = previousRenderState;
this.backend.finishRender( renderContext );

// restore render tree

nodeFrame.renderId = previousRenderId;
this._currentRenderContext = previousRenderState;

this._lastRenderContext = renderContext;

Expand Down
45 changes: 23 additions & 22 deletions examples/jsm/renderers/webgl/WebGLBackend.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ class WebGLBackend extends Backend {
const glContext = ( parameters.context !== undefined ) ? parameters.context : renderer.domElement.getContext( 'webgl2' );

this.gl = new Proxy( glContext, debugHandler );
// this.gl = glContext;
this.gl = glContext;

this.extensions = new WebGLExtensions( this );
this.attributeUtils = new WebGLAttributeUtils( this );
Expand Down Expand Up @@ -135,21 +135,23 @@ class WebGLBackend extends Backend {

finishRender( renderContext ) {

console.log( renderContext );
const gl = this.gl;
const lastRenderContext = this.renderer._lastRenderContext;

const fb = this.get( renderContext ).framebuffer;
if ( lastRenderContext !== renderContext && lastRenderContext !== null) {

if ( fb === undefined ) return;
this._setFramebuffer( lastRenderContext );

//console.warn( 'Abstract class.' );
gl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, fb );
if ( lastRenderContext.viewport ) {

this.updateViewport( lastRenderContext );

} else {

if ( renderContext.depthTexture !== null ) {
const gl = this.gl;

const { textureGPU } = this.get( renderContext.depthTexture );
gl.viewport( 0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight );

gl.framebufferTexture2D( gl.DRAW_FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, null, 0 );
}

}

Expand Down Expand Up @@ -225,15 +227,6 @@ class WebGLBackend extends Backend {

} else if ( binding.isSampledTexture ) {

const t = this.get( bindingData.textureGPU );

// if ( t.fb ) {

// gl.bindFramebuffer( gl.READ_FRAMEBUFFER, t.fb );
// gl.framebufferTexture2D( gl.READ_FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, null, 0 );

// }

gl.activeTexture( gl.TEXTURE0 + index );
gl.bindTexture( bindingData.glTextureType, bindingData.textureGPU );

Expand All @@ -249,7 +242,6 @@ class WebGLBackend extends Backend {

let { vaoGPU } = this.get( renderObject );


if ( vaoGPU === undefined ) {

vaoGPU = this.createVao( renderObject );
Expand Down Expand Up @@ -891,16 +883,25 @@ if ( error < 100 ) { console.log( this.get( texture ), texture ); error++ }

} else {

gl.activeTexture( gl.TEXTURE0 + 0 );
gl.bindTexture( gl.TEXTURE_2D, null );

gl.activeTexture( gl.TEXTURE0 + 1 );
gl.bindTexture( gl.TEXTURE_2D, null );

gl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, fb );

/*
if ( renderContext.depthTexture !== null ) {
console.log( 'rebind');
//console.log( 'rebind');
const { textureGPU } = this.get( renderContext.depthTexture );
gl.framebufferTexture2D( gl.DRAW_FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, textureGPU, 0 );
}

*/
}

} else {
Expand Down
2 changes: 1 addition & 1 deletion examples/jsm/renderers/webgpu/WebGPURenderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class WebGPURenderer extends Renderer {

let BackendClass;

if ( ! WebGPU.isAvailable() ) {
if ( !WebGPU.isAvailable() ) {

BackendClass = WebGPUBackend;

Expand Down

0 comments on commit 81a6080

Please sign in to comment.