Skip to content

Commit

Permalink
feat: refactor away large cubeMapFaces, replace with atomic arrays
Browse files Browse the repository at this point in the history
  • Loading branch information
bhouston committed Jul 23, 2020
1 parent 98d9a88 commit a7362bb
Show file tree
Hide file tree
Showing 42 changed files with 355 additions and 279 deletions.
3 changes: 2 additions & 1 deletion src/examples/brdfs/clearcoat/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { ClearState } from "../../../lib/renderers/webgl/ClearState";
import { CullingState } from "../../../lib/renderers/webgl/CullingState";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { BufferBit } from "../../../lib/renderers/webgl/framebuffers/BufferBit";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -66,7 +67,7 @@ async function init(): Promise<null> {
uniforms.pointLightViewPosition = new Vector3(Math.cos(now * 0.001) * 3.0, 2.0, 0.5);

canvasFramebuffer.clear(BufferBit.All);
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry);

requestAnimationFrame(animate);
}
Expand Down
6 changes: 5 additions & 1 deletion src/examples/brdfs/lambert/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { ClearState } from "../../../lib/renderers/webgl/ClearState";
import { CullingState } from "../../../lib/renderers/webgl/CullingState";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { BufferBit } from "../../../lib/renderers/webgl/framebuffers/BufferBit";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -53,14 +54,17 @@ async function init(): Promise<null> {

function animate(): void {
const now = Date.now();

uniforms.localToWorld = makeMatrix4RotationFromEuler(
new Euler(0.15 * Math.PI, now * 0.0002, 0, EulerOrder.XZY),
uniforms.localToWorld,
);
uniforms.viewToScreen = makeMatrix4PerspectiveFov(25, 0.1, 4.0, 1.0, canvasFramebuffer.aspectRatio);
uniforms.pointLightViewPosition = new Vector3(Math.cos(now * 0.001) * 3.0, 2.0, 0.5);

canvasFramebuffer.clear(BufferBit.All);
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry);

renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry);

requestAnimationFrame(animate);
}
Expand Down
3 changes: 2 additions & 1 deletion src/examples/brdfs/sheen/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import { ClearState } from "../../../lib/renderers/webgl/ClearState";
import { CullingState } from "../../../lib/renderers/webgl/CullingState";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { BufferBit } from "../../../lib/renderers/webgl/framebuffers/BufferBit";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import fragmentSource from "./fragment.glsl";
Expand Down Expand Up @@ -69,7 +70,7 @@ async function init(): Promise<null> {
uniforms.pointLightViewPosition = new Vector3(Math.cos(now * 0.001) * 3.0, 2.0, 0.5);

canvasFramebuffer.clear(BufferBit.All);
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry);

requestAnimationFrame(animate);
}
Expand Down
3 changes: 2 additions & 1 deletion src/examples/brdfs/specular/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { ClearState } from "../../../lib/renderers/webgl/ClearState";
import { CullingState } from "../../../lib/renderers/webgl/CullingState";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { BufferBit } from "../../../lib/renderers/webgl/framebuffers/BufferBit";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -66,7 +67,7 @@ async function init(): Promise<null> {
uniforms.pointLightViewPosition = new Vector3(Math.cos(now * 0.001) * 3.0, 2.0, 0.5);

canvasFramebuffer.clear(BufferBit.All);
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry);

requestAnimationFrame(animate);
}
Expand Down
3 changes: 2 additions & 1 deletion src/examples/brdfs/specularAnisotropic/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { ClearState } from "../../../lib/renderers/webgl/ClearState";
import { CullingState } from "../../../lib/renderers/webgl/CullingState";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { BufferBit } from "../../../lib/renderers/webgl/framebuffers/BufferBit";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -66,7 +67,7 @@ async function init(): Promise<null> {
uniforms.specularAnisotropicFlowMap = Math.floor(now / 5000) % 2 === 0 ? anisotropicFlow1Map : anisotropicFlow2Map;

canvasFramebuffer.clear(BufferBit.All);
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry);

requestAnimationFrame(animate);
}
Expand Down
3 changes: 2 additions & 1 deletion src/examples/cubemaps/basic/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
import { Vector3 } from "../../../lib/math/Vector3";
import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buffers/BufferGeometry";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromCubeTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -45,7 +46,7 @@ async function init(): Promise<null> {
new Euler(now * 0.0001, now * 0.00033, now * 0.000077),
uniforms.localToWorld,
);
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry, depthTestState);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry, depthTestState);
}

animate();
Expand Down
3 changes: 2 additions & 1 deletion src/examples/cubemaps/equirectangular/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { Vector2 } from "../../../lib/math/Vector2";
import { Vector3 } from "../../../lib/math/Vector3";
import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buffers/BufferGeometry";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromEquirectangularTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -53,7 +54,7 @@ async function init(): Promise<null> {
);
uniforms.perceptualRoughness = Math.sin(now * 0.001) * 0.5 + 0.5;

canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry, depthTestState);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry, depthTestState);
}

animate();
Expand Down
3 changes: 2 additions & 1 deletion src/examples/cubemaps/hdr/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
import { Vector3 } from "../../../lib/math/Vector3";
import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buffers/BufferGeometry";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromCubeTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -47,7 +48,7 @@ async function init(): Promise<null> {
uniforms.localToWorld,
);
uniforms.perceptualRoughness = Math.sin(now * 0.001) * 0.5 + 0.5;
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry, depthTestState);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry, depthTestState);

requestAnimationFrame(animate);
}
Expand Down
3 changes: 2 additions & 1 deletion src/examples/cubemaps/lod/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
import { Vector3 } from "../../../lib/math/Vector3";
import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buffers/BufferGeometry";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromCubeTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -48,7 +49,7 @@ async function init(): Promise<null> {
uniforms.localToWorld,
);
uniforms.perceptualRoughness = Math.sin(now * 0.001) * 0.5 + 0.5;
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry, depthTestState);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry, depthTestState);

requestAnimationFrame(animate);
}
Expand Down
3 changes: 2 additions & 1 deletion src/examples/cubemaps/mipmaps/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
import { Vector3 } from "../../../lib/math/Vector3";
import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buffers/BufferGeometry";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromCubeTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -56,7 +57,7 @@ async function init(): Promise<null> {
);
uniforms.perceptualRoughness = Math.sin(now * 0.005) * 0.5 + 0.5;

canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry, depthTestState);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry, depthTestState);
}

animate();
Expand Down
11 changes: 6 additions & 5 deletions src/examples/cubemaps/render/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@ import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buf
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { Attachment } from "../../../lib/renderers/webgl/framebuffers/Attachment";
import { Framebuffer } from "../../../lib/renderers/webgl/framebuffers/Framebuffer";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromCubeTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
import { TextureFilter } from "../../../lib/renderers/webgl/textures/TextureFilter";
import { cubeMapFaces, CubeMapTexture } from "../../../lib/textures/CubeTexture";
import { cubeFaceTargets, CubeMapTexture } from "../../../lib/textures/CubeTexture";
import { fetchImage } from "../../../lib/textures/loaders/Image";
import { Texture } from "../../../lib/textures/Texture";
import fragmentSource from "./fragment.glsl";
Expand Down Expand Up @@ -66,18 +67,18 @@ async function init(): Promise<null> {
requestAnimationFrame(animate);
const now = Date.now();

cubeMapFaces.forEach((cubeMapFace, index) => {
framebuffer.attach(Attachment.Color0, cubeMap, cubeMapFace.target, 0);
cubeFaceTargets.forEach((target, index) => {
framebuffer.attach(Attachment.Color0, cubeMap, target, 0);
patternUniforms.color = makeColor3FromHSL(index / 6 + now * 0.0001, 0.5, 0.5);

framebuffer.renderBufferGeometry(patternProgram, patternUniforms, patternBufferGeometry);
renderBufferGeometry(framebuffer, patternProgram, patternUniforms, patternBufferGeometry);
});

uniforms.localToWorld = makeMatrix4RotationFromEuler(
new Euler(now * 0.0001, now * 0.00033, now * 0.000077),
uniforms.localToWorld,
);
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry, depthTestState);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry, depthTestState);
}

animate();
Expand Down
4 changes: 3 additions & 1 deletion src/examples/gettingstarted/animatedUniforms/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ShaderMaterial } from "../../../lib/materials/ShaderMaterial";
import { Vector3 } from "../../../lib/math/Vector3";
import { makeColor3FromHSL } from "../../../lib/math/Vector3.Functions";
import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buffers/BufferGeometry";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import fragmentSource from "./fragment.glsl";
Expand All @@ -28,7 +29,8 @@ function animate(): void {

uniforms.scale = 0.6 + 0.4 * Math.cos(Date.now() * 0.001);
uniforms.color = makeColor3FromHSL(Date.now() * 0.001, 1.0, 0.5, uniforms.color);
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry);

renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry);
}

animate();
3 changes: 2 additions & 1 deletion src/examples/gettingstarted/interleavedBuffers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Geometry } from "../../../lib/geometry/Geometry";
import { convertToInterleavedGeometry } from "../../../lib/geometry/Geometry.Functions";
import { ShaderMaterial } from "../../../lib/materials/ShaderMaterial";
import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buffers/BufferGeometry";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import fragmentSource from "./fragment.glsl";
Expand All @@ -23,4 +24,4 @@ const bufferGeometry = makeBufferGeometryFromGeometry(context, geometry);
const program = makeProgramFromShaderMaterial(context, material);
const uniforms = {};

canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry);
3 changes: 2 additions & 1 deletion src/examples/gettingstarted/lambertCube/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
import { Vector3 } from "../../../lib/math/Vector3";
import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buffers/BufferGeometry";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -46,7 +47,7 @@ async function init(): Promise<null> {
new Euler(now * 0.001, now * 0.0033, now * 0.00077),
uniforms.localToWorld,
);
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry, depthTestState);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry, depthTestState);
}

animate();
Expand Down
3 changes: 2 additions & 1 deletion src/examples/gettingstarted/orthographic/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { Vector2 } from "../../../lib/math/Vector2";
import { Vector3 } from "../../../lib/math/Vector3";
import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buffers/BufferGeometry";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -45,7 +46,7 @@ async function init(): Promise<null> {
new Euler(now * 0.001, now * 0.0033, now * 0.00077),
uniforms.localToWorld,
);
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry, depthTestState);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry, depthTestState);

requestAnimationFrame(animate);
}
Expand Down
3 changes: 2 additions & 1 deletion src/examples/gettingstarted/triangle/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { makeFloat32Attribute, makeUint8Attribute } from "../../../lib/geometry/
import { Geometry } from "../../../lib/geometry/Geometry";
import { ShaderMaterial } from "../../../lib/materials/ShaderMaterial";
import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buffers/BufferGeometry";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import fragmentSource from "./fragment.glsl";
Expand All @@ -21,4 +22,4 @@ const bufferGeometry = makeBufferGeometryFromGeometry(context, geometry);
const program = makeProgramFromShaderMaterial(context, material);
const uniforms = {};

canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry);
3 changes: 2 additions & 1 deletion src/examples/interaction/deviceOrientation/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
import { Vector3 } from "../../../lib/math/Vector3";
import { makeBufferGeometryFromGeometry } from "../../../lib/renderers/webgl/buffers/BufferGeometry";
import { DepthTestFunc, DepthTestState } from "../../../lib/renderers/webgl/DepthTestState";
import { renderBufferGeometry } from "../../../lib/renderers/webgl/framebuffers/VirtualFramebuffer";
import { makeProgramFromShaderMaterial } from "../../../lib/renderers/webgl/programs/Program";
import { RenderingContext } from "../../../lib/renderers/webgl/RenderingContext";
import { makeTexImage2DFromTexture } from "../../../lib/renderers/webgl/textures/TexImage2D";
Expand Down Expand Up @@ -58,7 +59,7 @@ async function init(): Promise<null> {
if (deviceOrientation !== undefined) {
uniforms.localToWorld = makeMatrix4Inverse(makeMatrix4RotationFromQuaternion(deviceOrientation.orientation));
}
canvasFramebuffer.renderBufferGeometry(program, uniforms, bufferGeometry, depthTestState);
renderBufferGeometry(canvasFramebuffer, program, uniforms, bufferGeometry, depthTestState);
}

animate();
Expand Down
Loading

0 comments on commit a7362bb

Please sign in to comment.