Skip to content

Commit

Permalink
TopologyHelpers: Adapt new enum naming style
Browse files Browse the repository at this point in the history
  • Loading branch information
magcius committed Mar 8, 2022
1 parent 21d40d2 commit 18b763a
Show file tree
Hide file tree
Showing 15 changed files with 46 additions and 41 deletions.
4 changes: 2 additions & 2 deletions src/Common/JSYSTEM/JPA.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1000,7 +1000,7 @@ class StripeBufferManager {
private indexBufferDescriptor: GfxIndexBufferDescriptor;

constructor(device: GfxDevice, public inputLayout: GfxInputLayout) {
const tristripIndexData = makeTriangleIndexBuffer(GfxTopology.TRISTRIP, 0, MAX_STRIPE_VERTEX_COUNT);
const tristripIndexData = makeTriangleIndexBuffer(GfxTopology.TriStrips, 0, MAX_STRIPE_VERTEX_COUNT);
this.indexBuffer = makeStaticDataBuffer(device, GfxBufferUsage.Index, tristripIndexData.buffer);
this.indexBufferDescriptor = { buffer: this.indexBuffer, byteOffset: 0 };
}
Expand Down Expand Up @@ -2012,7 +2012,7 @@ export class JPABaseEmitter {

workData.fillParticleRenderInst(device, renderInstManager, template);

const oneStripIndexCount = getTriangleIndexCountForTopologyIndexCount(GfxTopology.TRISTRIP, oneStripVertexCount);
const oneStripIndexCount = getTriangleIndexCountForTopologyIndexCount(GfxTopology.TriStrips, oneStripVertexCount);

const renderInst1 = renderInstManager.newRenderInst();
renderInst1.drawIndexes(oneStripIndexCount);
Expand Down
2 changes: 1 addition & 1 deletion src/DarkSouls/render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ export class FLVERData {
const batch = flver.batches[i];
for (let j = 0; j < batch.primitiveIndexes.length; j++) {
const primitive = flver.primitives[batch.primitiveIndexes[j]];
const triangleIndexData = filterDegenerateTriangleIndexBuffer(convertToTriangleIndexBuffer(GfxTopology.TRISTRIP, primitive.indexData.createTypedArray(Uint16Array)));
const triangleIndexData = filterDegenerateTriangleIndexBuffer(convertToTriangleIndexBuffer(GfxTopology.TriStrips, primitive.indexData.createTypedArray(Uint16Array)));
const triangleIndexCount = triangleIndexData.byteLength / 2;
indexBufferDatas.push(new ArrayBufferSlice(triangleIndexData.buffer));
triangleIndexCounts.push(triangleIndexCount);
Expand Down
2 changes: 1 addition & 1 deletion src/GrandTheftAuto3/render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ class RWMeshFragData implements MeshFragData {
this.indexMap = Array.from(new Set(mesh.indices)).sort();

this.indices = filterDegenerateTriangleIndexBuffer(convertToTriangleIndexBuffer(
tristrip ? GfxTopology.TRISTRIP : GfxTopology.TRIANGLES,
tristrip ? GfxTopology.TriStrips : GfxTopology.Triangles,
mesh.indices!.map(index => this.indexMap.indexOf(index))));
}

Expand Down
2 changes: 1 addition & 1 deletion src/InteractiveExamples/GridPlane.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ export class GridPlane {
vtx[11] = 1;
this.posBuffer = makeStaticDataBuffer(device, GfxBufferUsage.Vertex, vtx.buffer);

this.idxBuffer = makeStaticDataBuffer(device, GfxBufferUsage.Index, makeTriangleIndexBuffer(GfxTopology.TRISTRIP, 0, 4).buffer);
this.idxBuffer = makeStaticDataBuffer(device, GfxBufferUsage.Index, makeTriangleIndexBuffer(GfxTopology.TriStrips, 0, 4).buffer);

const vertexAttributeDescriptors: GfxVertexAttributeDescriptor[] = [
{ location: GridPlaneProgram.a_Position, format: GfxFormat.F32_RGB, bufferByteOffset: 0, bufferIndex: 0, },
Expand Down
2 changes: 1 addition & 1 deletion src/InteractiveExamples/SunshineWater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class PlaneShape {
vtx[19] = 2;

this.vtxBuffer = makeStaticDataBuffer(device, GfxBufferUsage.Vertex, vtx.buffer);
this.idxBuffer = makeStaticDataBuffer(device, GfxBufferUsage.Index, makeTriangleIndexBuffer(GfxTopology.TRISTRIP, 0, 4).buffer);
this.idxBuffer = makeStaticDataBuffer(device, GfxBufferUsage.Index, makeTriangleIndexBuffer(GfxTopology.TriStrips, 0, 4).buffer);

const vertexAttributeDescriptors: GfxVertexAttributeDescriptor[] = [
{ location: GX_Material.getVertexInputLocation(VertexAttributeInput.POS), format: GfxFormat.F32_RGB, bufferByteOffset: 4*0, bufferIndex: 0, },
Expand Down
2 changes: 1 addition & 1 deletion src/PaperMarioTTYD/world.ts
Original file line number Diff line number Diff line change
Expand Up @@ -995,7 +995,7 @@ export function parse(buffer: ArrayBufferSlice): TTYDWorld {
dstIdx += loadedVertexLayout.vertexBufferStrides[0];
}

const indexBuffer = makeTriangleIndexBuffer(GfxTopology.TRISTRIP, vertexId, vertexCount);
const indexBuffer = makeTriangleIndexBuffer(GfxTopology.TriStrips, vertexId, vertexCount);
vertexId += vertexCount;
const totalIndexCount = indexBuffer.length;
const indexData = indexBuffer.buffer;
Expand Down
8 changes: 4 additions & 4 deletions src/SourceEngine/BSPFile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -561,8 +561,8 @@ function buildOverlay(overlayInfo: OverlayInfo, faceToSurfaceInfo: FaceToSurface
const baseVertex = vertex.length;
vertex.push(...overlayPoints);
const dstIndexOffs = indices.length;
indices.length = indices.length + getTriangleIndexCountForTopologyIndexCount(GfxTopology.TRIFAN, overlayPoints.length);
convertToTrianglesRange(indices, dstIndexOffs, GfxTopology.TRIFAN, baseVertex, overlayPoints.length);
indices.length = indices.length + getTriangleIndexCountForTopologyIndexCount(GfxTopology.TriFans, overlayPoints.length);
convertToTrianglesRange(indices, dstIndexOffs, GfxTopology.TriFans, baseVertex, overlayPoints.length);
}

if (vertex.length === 0)
Expand Down Expand Up @@ -1546,7 +1546,7 @@ export class BSPFile {
addVertexDataToBuffer(vertex, tex, center, tangentW);

// index buffer
indexCount = getTriangleIndexCountForTopologyIndexCount(GfxTopology.TRIFAN, numedges);
indexCount = getTriangleIndexCountForTopologyIndexCount(GfxTopology.TriFans, numedges);
const indexData = indexBuffer.addUint32(indexCount);
if (m_NumPrims !== 0) {
let primType, primFirstIndex, primIndexCount, primFirstVert, primVertCount;
Expand Down Expand Up @@ -1578,7 +1578,7 @@ export class BSPFile {
for (let k = 0; k < indexCount; k++)
indexData[dstOffsIndex + k] = dstIndexBase + primindices[primFirstIndex + k];
} else {
convertToTrianglesRange(indexData, dstOffsIndex, GfxTopology.TRIFAN, dstIndexBase, numedges);
convertToTrianglesRange(indexData, dstOffsIndex, GfxTopology.TriFans, dstIndexBase, numedges);
}

surface = mergeSurface;
Expand Down
2 changes: 1 addition & 1 deletion src/SourceEngine/StaticDetailObject.ts
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ export class DetailPropLeafRenderer {
vertexOffs += fillColor(vertexData, vertexOffs, entry.color);
}

convertToTrianglesRange(this.indexData, 0, GfxTopology.QUADS, 0, sortList.length * 4);
convertToTrianglesRange(this.indexData, 0, GfxTopology.Quads, 0, sortList.length * 4);

const device = renderContext.device;
device.uploadBufferData(this.vertexBuffer, 0, new Uint8Array(this.vertexData.buffer));
Expand Down
2 changes: 1 addition & 1 deletion src/SpongeBobBFBB/render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ class RWMeshFragData implements MeshFragData {
this.indexMap = Array.from(new Set(mesh.indices)).sort();

this.indices = filterDegenerateTriangleIndexBuffer(convertToTriangleIndexBuffer(
tristrip ? GfxTopology.TRISTRIP : GfxTopology.TRIANGLES,
tristrip ? GfxTopology.TriStrips : GfxTopology.Triangles,
mesh.indices!.map(index => this.indexMap.indexOf(index))));
}

Expand Down
8 changes: 4 additions & 4 deletions src/SuperMario64DS/nitro_gx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,13 +219,13 @@ export interface DrawCall {
function translatePolyType(polyType: PolyType): GfxTopology {
switch (polyType) {
case PolyType.TRIANGLES:
return GfxTopology.TRIANGLES;
return GfxTopology.Triangles;
case PolyType.TRIANGLE_STRIP:
return GfxTopology.TRISTRIP;
return GfxTopology.TriStrips;
case PolyType.QUADS:
return GfxTopology.QUADS;
return GfxTopology.Quads;
case PolyType.QUAD_STRIP:
return GfxTopology.QUADSTRIP;
return GfxTopology.QuadStrips;
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/SuperMarioGalaxy/Actors/MiscActor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5377,7 +5377,7 @@ class OceanRingPipe extends LiveActor {

assert(pointCount < 0xFFFF);
const tristripsPerSegment = this.pointsPerSegment * 2;
const indexCountPerSegment = getTriangleIndexCountForTopologyIndexCount(GfxTopology.TRISTRIP, tristripsPerSegment);
const indexCountPerSegment = getTriangleIndexCountForTopologyIndexCount(GfxTopology.TriStrips, tristripsPerSegment);
this.indexCount = (this.segmentCount + 1) * indexCountPerSegment;
const indexData = new Uint16Array(this.indexCount);
let io = 0;
Expand Down
8 changes: 4 additions & 4 deletions src/SuperMarioGalaxy/DDraw.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ import { GfxRenderCache } from '../gfx/render/GfxRenderCache';

function getGfxToplogyFromCommand(cmd: GX.Command): GfxTopology {
if (cmd === GX.Command.DRAW_QUADS)
return GfxTopology.QUADS;
return GfxTopology.Quads;
else if (cmd === GX.Command.DRAW_TRIANGLE_STRIP)
return GfxTopology.TRISTRIP;
return GfxTopology.TriStrips;
else if (cmd === GX.Command.DRAW_TRIANGLES)
return GfxTopology.TRIANGLES;
return GfxTopology.Triangles;
else if (cmd === GX.Command.DRAW_TRIANGLE_FAN)
return GfxTopology.TRIFAN;
return GfxTopology.TriFans;
else
throw "whoops";
}
Expand Down
34 changes: 17 additions & 17 deletions src/gfx/helpers/TopologyHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
import { assert } from "../platform/GfxPlatformUtil";

export const enum GfxTopology {
TRIANGLES, TRISTRIP, TRIFAN, QUADS, QUADSTRIP,
Triangles, TriStrips, TriFans, Quads, QuadStrips,
};

export function convertToTriangles(dstBuffer: Uint16Array | Uint32Array, dstOffs: number, topology: GfxTopology, indexBuffer: Uint16Array | Uint32Array): void {
assert(dstOffs + getTriangleIndexCountForTopologyIndexCount(topology, indexBuffer.length) <= dstBuffer.length);

let dst = dstOffs;
if (topology === GfxTopology.QUADS) {
if (topology === GfxTopology.Quads) {
for (let i = 0; i < indexBuffer.length; i += 4) {
dstBuffer[dst++] = indexBuffer[i + 0];
dstBuffer[dst++] = indexBuffer[i + 1];
Expand All @@ -18,7 +18,7 @@ export function convertToTriangles(dstBuffer: Uint16Array | Uint32Array, dstOffs
dstBuffer[dst++] = indexBuffer[i + 2];
dstBuffer[dst++] = indexBuffer[i + 3];
}
} else if (topology === GfxTopology.TRISTRIP) {
} else if (topology === GfxTopology.TriStrips) {
for (let i = 0; i < indexBuffer.length - 2; i++) {
if (i % 2 === 0) {
dstBuffer[dst++] = indexBuffer[i + 0];
Expand All @@ -30,13 +30,13 @@ export function convertToTriangles(dstBuffer: Uint16Array | Uint32Array, dstOffs
dstBuffer[dst++] = indexBuffer[i + 2];
}
}
} else if (topology === GfxTopology.TRIFAN) {
} else if (topology === GfxTopology.TriFans) {
for (let i = 0; i < indexBuffer.length - 2; i++) {
dstBuffer[dst++] = indexBuffer[0];
dstBuffer[dst++] = indexBuffer[i + 1];
dstBuffer[dst++] = indexBuffer[i + 2];
}
} else if (topology === GfxTopology.QUADSTRIP) {
} else if (topology === GfxTopology.QuadStrips) {
for (let i = 0; i < indexBuffer.length - 2; i += 2) {
dstBuffer[dst++] = indexBuffer[i + 0];
dstBuffer[dst++] = indexBuffer[i + 1];
Expand All @@ -45,7 +45,7 @@ export function convertToTriangles(dstBuffer: Uint16Array | Uint32Array, dstOffs
dstBuffer[dst++] = indexBuffer[i + 1];
dstBuffer[dst++] = indexBuffer[i + 3];
}
} else if (topology === GfxTopology.TRIANGLES) {
} else if (topology === GfxTopology.Triangles) {
dstBuffer.set(indexBuffer, dstOffs);
}
}
Expand All @@ -54,7 +54,7 @@ export function convertToTrianglesRange(dstBuffer: Uint16Array | Uint32Array | n
assert(dstOffs + getTriangleIndexCountForTopologyIndexCount(topology, numVertices) <= dstBuffer.length);

let dst = dstOffs;
if (topology === GfxTopology.QUADS) {
if (topology === GfxTopology.Quads) {
for (let i = 0; i < numVertices; i += 4) {
dstBuffer[dst++] = baseVertex + i + 0;
dstBuffer[dst++] = baseVertex + i + 1;
Expand All @@ -63,7 +63,7 @@ export function convertToTrianglesRange(dstBuffer: Uint16Array | Uint32Array | n
dstBuffer[dst++] = baseVertex + i + 3;
dstBuffer[dst++] = baseVertex + i + 0;
}
} else if (topology === GfxTopology.TRISTRIP) {
} else if (topology === GfxTopology.TriStrips) {
for (let i = 0; i < numVertices - 2; i++) {
if (i % 2 === 0) {
dstBuffer[dst++] = baseVertex + i + 0;
Expand All @@ -75,13 +75,13 @@ export function convertToTrianglesRange(dstBuffer: Uint16Array | Uint32Array | n
dstBuffer[dst++] = baseVertex + i + 2;
}
}
} else if (topology === GfxTopology.TRIFAN) {
} else if (topology === GfxTopology.TriFans) {
for (let i = 0; i < numVertices - 2; i++) {
dstBuffer[dst++] = baseVertex + 0;
dstBuffer[dst++] = baseVertex + i + 1;
dstBuffer[dst++] = baseVertex + i + 2;
}
} else if (topology === GfxTopology.QUADSTRIP) {
} else if (topology === GfxTopology.QuadStrips) {
for (let i = 0; i < numVertices - 2; i += 2) {
dstBuffer[dst++] = baseVertex + i + 0;
dstBuffer[dst++] = baseVertex + i + 1;
Expand All @@ -90,14 +90,14 @@ export function convertToTrianglesRange(dstBuffer: Uint16Array | Uint32Array | n
dstBuffer[dst++] = baseVertex + i + 1;
dstBuffer[dst++] = baseVertex + i + 3;
}
} else if (topology === GfxTopology.TRIANGLES) {
} else if (topology === GfxTopology.Triangles) {
for (let i = 0; i < numVertices; i++)
dstBuffer[dst++] = baseVertex + i;
}
}

export function convertToTriangleIndexBuffer(topology: GfxTopology, indexBuffer: Uint16Array): Uint16Array {
if (topology === GfxTopology.TRIANGLES)
if (topology === GfxTopology.Triangles)
return indexBuffer;

const newSize = getTriangleIndexCountForTopologyIndexCount(topology, indexBuffer.length);
Expand All @@ -120,17 +120,17 @@ export function makeTriangleIndexBuffer(topology: GfxTopology, baseVertex: numbe

export function getTriangleCountForTopologyIndexCount(topology: GfxTopology, indexCount: number): number {
switch (topology) {
case GfxTopology.TRIANGLES:
case GfxTopology.Triangles:
// One triangle per every three indexes.
return indexCount / 3;
case GfxTopology.TRISTRIP:
case GfxTopology.TRIFAN:
case GfxTopology.TriStrips:
case GfxTopology.TriFans:
// One triangle per index, minus the first two.
return (indexCount - 2);
case GfxTopology.QUADS:
case GfxTopology.Quads:
// Two triangles per four indices.
return 2 * (indexCount / 4);
case GfxTopology.QUADSTRIP:
case GfxTopology.QuadStrips:
// Two triangles per two indexes, minus the first two.
return 2 * (indexCount - 2);
}
Expand Down
5 changes: 5 additions & 0 deletions src/gfx/platform/GfxPlatformUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,11 @@ export function gfxColorCopy(dst: GfxColor, src: Readonly<GfxColor>): void {
dst.a = src.a;
}

export function gfxColorNewCopy(src: Readonly<GfxColor>): GfxColor {
const { r, g, b, a } = src;
return { r, g, b, a };
}

// Copied from toplevel util.ts

export function assert(b: boolean, message: string = ""): asserts b {
Expand Down
4 changes: 2 additions & 2 deletions src/psychonauts/plb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -271,10 +271,10 @@ function readEMeshFrag(stream: DataStream, version: number): EMeshFrag {
let streamIdx: ArrayBufferSlice;
let topology: GfxTopology;
if (!!(materialFlags & MaterialFlags.Tristrip)) {
topology = GfxTopology.TRISTRIP;
topology = GfxTopology.TriStrips;
streamIdx = stream.readSlice(0x02 * (iPolyCount + 2));
} else {
topology = GfxTopology.TRIANGLES;
topology = GfxTopology.Triangles;
streamIdx = stream.readSlice(0x02 * (iPolyCount * 3));
}

Expand Down

0 comments on commit 18b763a

Please sign in to comment.