Skip to content

Commit

Permalink
- fixed displacement
Browse files Browse the repository at this point in the history
  • Loading branch information
webseon@gmail.com authored and webseon@gmail.com committed Dec 6, 2021
1 parent 72e661a commit 2c0cbe9
Show file tree
Hide file tree
Showing 8 changed files with 28 additions and 20 deletions.
2 changes: 1 addition & 1 deletion dist/RedGPU.min.mjs

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions examples/loader/gltf/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ new RedGPU.RedGPUContext(
renderer = new RedGPU.Render();
render = time => {
renderer.render(time, this);
// tScene.children[0].rotationY+=0.1
requestAnimationFrame(render);
};
requestAnimationFrame(render);
Expand Down
29 changes: 20 additions & 9 deletions src/base/ShareGLSL.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,26 @@ export default class ShareGLSL {
float sumOpacity;
} meshUniforms;
`,
calcDisplacement: `
vec3 calcDisplacement(vec3 vNormal, float displacementFlowSpeedX, float displacementFlowSpeedY, float displacementPower, vec2 targetUV, texture2D targetDisplacementTexture, sampler targetSampler)
{
return normalize(vNormal) * texture(sampler2D(targetDisplacementTexture, targetSampler), targetUV + vec2(
displacementFlowSpeedX * (systemUniforms.time/1000.0),
displacementFlowSpeedY * (systemUniforms.time/1000.0)
)).x * displacementPower ;
}
`,
calcDisplacement: (
vNormal='vNormal',
displacementFlowSpeedX='displacementFlowSpeedX',
displacementFlowSpeedY='displacementFlowSpeedY',
displacementPower='displacementPower',
targetUV='targetUV',
targetDisplacementTexture='targetDisplacementTexture',
targetSampler='targetSampler'
)=>{
return `
normalize(${vNormal})
* texture(
sampler2D(${targetDisplacementTexture}, ${targetSampler}),
${targetUV} + vec2(
${displacementFlowSpeedX} * (systemUniforms.time/1000.0),
${displacementFlowSpeedY} * (systemUniforms.time/1000.0)
)
).x * ${displacementPower};
`
},
getSprite3DMatrix: `
mat4 getSprite3DMatrix(mat4 cameraMTX, mat4 mvMatrix){
mat4 tMTX = cameraMTX * mvMatrix;
Expand Down
4 changes: 2 additions & 2 deletions src/material/ColorPhongTextureMaterial.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export default class ColorPhongTextureMaterial extends Mix.mix(
static vertexShaderGLSL = `
${ShareGLSL.GLSL_VERSION}
${ShareGLSL.GLSL_SystemUniforms_vertex.systemUniforms}
${ShareGLSL.GLSL_SystemUniforms_vertex.calcDisplacement}
${ShareGLSL.GLSL_SystemUniforms_vertex.meshUniforms}
layout( location = 0 ) in vec3 position;
layout( location = 1 ) in vec3 normal;
Expand All @@ -51,7 +51,7 @@ export default class ColorPhongTextureMaterial extends Mix.mix(
vUV = uv;
vMouseColorID = meshUniforms.mouseColorID;
vSumOpacity = meshUniforms.sumOpacity;
// if(vertexUniforms.__displacementTextureRenderYn == TRUTHY) vVertexPosition.xyz += calcDisplacement(vNormal, vertexUniforms.displacementFlowSpeedX, vertexUniforms.displacementFlowSpeedY, vertexUniforms.displacementPower, uv, uDisplacementTexture, uSampler);
if(vertexUniforms.__displacementTextureRenderYn == TRUTHY) vVertexPosition.xyz += ${ShareGLSL.GLSL_SystemUniforms_vertex.calcDisplacement('vNormal', 'vertexUniforms.displacementFlowSpeedX', 'vertexUniforms.displacementFlowSpeedY', 'vertexUniforms.displacementPower', 'uv', 'uDisplacementTexture', 'uSampler')}
gl_Position = systemUniforms.perspectiveMTX * systemUniforms.cameraMTX * vVertexPosition;
}
`;
Expand Down
3 changes: 1 addition & 2 deletions src/material/EnvironmentMaterial.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ export default class EnvironmentMaterial extends Mix.mix(
static vertexShaderGLSL = `
${ShareGLSL.GLSL_VERSION}
${ShareGLSL.GLSL_SystemUniforms_vertex.systemUniforms}
${ShareGLSL.GLSL_SystemUniforms_vertex.calcDisplacement}
${ShareGLSL.GLSL_SystemUniforms_vertex.meshUniforms}
layout( location = 0 ) in vec3 position;
Expand All @@ -53,7 +52,7 @@ export default class EnvironmentMaterial extends Mix.mix(
vUV = uv;
vMouseColorID = meshUniforms.mouseColorID;
vSumOpacity = meshUniforms.sumOpacity;
// if(vertexUniforms.__displacementTextureRenderYn == TRUTHY) vVertexPosition.xyz += calcDisplacement(vNormal, vertexUniforms.displacementFlowSpeedX, vertexUniforms.displacementFlowSpeedY, vertexUniforms.displacementPower, uv, uDisplacementTexture, uDisplacementSampler);
if(vertexUniforms.__displacementTextureRenderYn == TRUTHY) vVertexPosition.xyz += ${ShareGLSL.GLSL_SystemUniforms_vertex.calcDisplacement('vNormal', 'vertexUniforms.displacementFlowSpeedX', 'vertexUniforms.displacementFlowSpeedY', 'vertexUniforms.displacementPower', 'uv', 'uDisplacementTexture', 'uDisplacementSampler')}
gl_Position = systemUniforms.perspectiveMTX * systemUniforms.cameraMTX * vVertexPosition;
Expand Down
3 changes: 1 addition & 2 deletions src/material/RefractionMaterial.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ export default class RefractionMaterial extends Mix.mix(
static vertexShaderGLSL = `
${ShareGLSL.GLSL_VERSION}
${ShareGLSL.GLSL_SystemUniforms_vertex.systemUniforms}
${ShareGLSL.GLSL_SystemUniforms_vertex.calcDisplacement}
${ShareGLSL.GLSL_SystemUniforms_vertex.meshUniforms}
layout( location = 0 ) in vec3 position;
Expand All @@ -54,7 +53,7 @@ export default class RefractionMaterial extends Mix.mix(
vUV = uv;
vMouseColorID = meshUniforms.mouseColorID;
vSumOpacity = meshUniforms.sumOpacity;
// if(vertexUniforms.__displacementTextureRenderYn == TRUTHY) vVertexPosition.xyz += calcDisplacement(vNormal, vertexUniforms.displacementFlowSpeedX, vertexUniforms.displacementFlowSpeedY, vertexUniforms.displacementPower, uv, uDisplacementTexture, uDisplacementSampler);
if(vertexUniforms.__displacementTextureRenderYn == TRUTHY) vVertexPosition.xyz += ${ShareGLSL.GLSL_SystemUniforms_vertex.calcDisplacement('vNormal', 'vertexUniforms.displacementFlowSpeedX', 'vertexUniforms.displacementFlowSpeedY', 'vertexUniforms.displacementPower', 'uv', 'uDisplacementTexture', 'uDisplacementSampler')}
gl_Position = systemUniforms.perspectiveMTX * systemUniforms.cameraMTX * vVertexPosition;
}
`;
Expand Down
3 changes: 1 addition & 2 deletions src/material/StandardMaterial.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ export default class StandardMaterial extends Mix.mix(
static vertexShaderGLSL = `
${ShareGLSL.GLSL_VERSION}
${ShareGLSL.GLSL_SystemUniforms_vertex.systemUniforms}
${ShareGLSL.GLSL_SystemUniforms_vertex.calcDisplacement}
${ShareGLSL.GLSL_SystemUniforms_vertex.meshUniforms}
layout( location = 0 ) in vec3 position;
Expand All @@ -53,7 +52,7 @@ export default class StandardMaterial extends Mix.mix(
vUV = uv;
vMouseColorID = meshUniforms.mouseColorID;
vSumOpacity = meshUniforms.sumOpacity;
// if(vertexUniforms.__displacementTextureRenderYn == TRUTHY) vVertexPosition.xyz += calcDisplacement(vNormal, vertexUniforms.displacementFlowSpeedX, vertexUniforms.displacementFlowSpeedY, vertexUniforms.displacementPower, uv, uDisplacementTexture, uSampler);
if(vertexUniforms.__displacementTextureRenderYn == TRUTHY) vVertexPosition.xyz += ${ShareGLSL.GLSL_SystemUniforms_vertex.calcDisplacement('vNormal', 'vertexUniforms.displacementFlowSpeedX', 'vertexUniforms.displacementFlowSpeedY', 'vertexUniforms.displacementPower', 'uv', 'uDisplacementTexture', 'uSampler')}
gl_Position = systemUniforms.perspectiveMTX * systemUniforms.cameraMTX * vVertexPosition;
Expand Down
3 changes: 1 addition & 2 deletions src/material/system/PBRMaterial_System.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ export default class PBRMaterial_System extends Mix.mix(
static vertexShaderGLSL = `
${ShareGLSL.GLSL_VERSION}
${ShareGLSL.GLSL_SystemUniforms_vertex.systemUniforms}
${ShareGLSL.GLSL_SystemUniforms_vertex.calcDisplacement}
${ShareGLSL.GLSL_SystemUniforms_vertex.meshUniforms}
layout( location = 0 ) in vec3 position;
Expand Down Expand Up @@ -86,7 +85,7 @@ export default class PBRMaterial_System extends Mix.mix(
vVertexTangent = vertexTangent;
vMouseColorID = meshUniforms.mouseColorID;
vSumOpacity = meshUniforms.sumOpacity;
// if(vertexUniforms.__displacementTextureRenderYn == TRUTHY) vVertexPosition.xyz += calcDisplacement(vNormal, vertexUniforms.displacementFlowSpeedX, vertexUniforms.displacementFlowSpeedY, vertexUniforms.displacementPower, uv, uDisplacementTexture, uDisplacementSampler);
if(vertexUniforms.__displacementTextureRenderYn == TRUTHY) vVertexPosition.xyz += ${ShareGLSL.GLSL_SystemUniforms_vertex.calcDisplacement('vNormal', 'vertexUniforms.displacementFlowSpeedX', 'vertexUniforms.displacementFlowSpeedY', 'vertexUniforms.displacementPower', 'uv', 'uDisplacementTexture', 'uDisplacementSampler')}
gl_Position = systemUniforms.perspectiveMTX * systemUniforms.cameraMTX * vVertexPosition;
}
`;
Expand Down

0 comments on commit 2c0cbe9

Please sign in to comment.