Skip to content
Snippets Groups Projects
Commit a828dd4c authored by Alexander Rose's avatar Alexander Rose
Browse files

added draw & instance count to renderer stats

parent e25fbfe2
No related branches found
No related tags found
No related merge requests found
...@@ -26,6 +26,10 @@ export interface RendererStats { ...@@ -26,6 +26,10 @@ export interface RendererStats {
renderbufferCount: number renderbufferCount: number
textureCount: number textureCount: number
vaoCount: number vaoCount: number
drawCount: number
instanceCount: number
instancedDrawCount: number
} }
interface Renderer { interface Renderer {
...@@ -166,7 +170,6 @@ namespace Renderer { ...@@ -166,7 +170,6 @@ namespace Renderer {
}, },
get stats(): RendererStats { get stats(): RendererStats {
console.log(ctx)
return { return {
programCount: ctx.programCache.count, programCount: ctx.programCache.count,
shaderCount: ctx.shaderCache.count, shaderCount: ctx.shaderCache.count,
...@@ -176,6 +179,10 @@ namespace Renderer { ...@@ -176,6 +179,10 @@ namespace Renderer {
renderbufferCount: ctx.renderbufferCount, renderbufferCount: ctx.renderbufferCount,
textureCount: ctx.textureCount, textureCount: ctx.textureCount,
vaoCount: ctx.vaoCount, vaoCount: ctx.vaoCount,
drawCount: ctx.drawCount,
instanceCount: ctx.instanceCount,
instancedDrawCount: ctx.instancedDrawCount,
} }
}, },
dispose: () => { dispose: () => {
......
...@@ -76,6 +76,10 @@ export interface Context { ...@@ -76,6 +76,10 @@ export interface Context {
textureCount: number textureCount: number
vaoCount: number vaoCount: number
drawCount: number
instanceCount: number
instancedDrawCount: number
unbindFramebuffer: () => void unbindFramebuffer: () => void
readPixels: (x: number, y: number, width: number, height: number, buffer: Uint8Array) => void readPixels: (x: number, y: number, width: number, height: number, buffer: Uint8Array) => void
destroy: () => void destroy: () => void
...@@ -116,6 +120,10 @@ export function createContext(gl: WebGLRenderingContext): Context { ...@@ -116,6 +120,10 @@ export function createContext(gl: WebGLRenderingContext): Context {
textureCount: 0, textureCount: 0,
vaoCount: 0, vaoCount: 0,
drawCount: 0,
instanceCount: 0,
instancedDrawCount: 0,
unbindFramebuffer: () => unbindFramebuffer(gl), unbindFramebuffer: () => unbindFramebuffer(gl),
readPixels: (x: number, y: number, width: number, height: number, buffer: Uint8Array) => { readPixels: (x: number, y: number, width: number, height: number, buffer: Uint8Array) => {
gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, buffer) gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, buffer)
......
...@@ -97,6 +97,10 @@ export function createRenderItem(ctx: Context, drawMode: DrawMode, shaderCode: S ...@@ -97,6 +97,10 @@ export function createRenderItem(ctx: Context, drawMode: DrawMode, shaderCode: S
let drawCount = values.drawCount.ref.value let drawCount = values.drawCount.ref.value
let instanceCount = values.instanceCount.ref.value let instanceCount = values.instanceCount.ref.value
ctx.drawCount += drawCount
ctx.instanceCount += instanceCount
ctx.instancedDrawCount += instanceCount * drawCount
const valueChanges: ValueChanges = { const valueChanges: ValueChanges = {
attributes: false, attributes: false,
defines: false, defines: false,
...@@ -157,11 +161,15 @@ export function createRenderItem(ctx: Context, drawMode: DrawMode, shaderCode: S ...@@ -157,11 +161,15 @@ export function createRenderItem(ctx: Context, drawMode: DrawMode, shaderCode: S
if (values.drawCount.ref.version !== versions.drawCount) { if (values.drawCount.ref.version !== versions.drawCount) {
// console.log('drawCount version changed') // console.log('drawCount version changed')
ctx.drawCount += values.drawCount.ref.value - drawCount
ctx.instancedDrawCount += instanceCount * values.drawCount.ref.value - instanceCount * drawCount
drawCount = values.drawCount.ref.value drawCount = values.drawCount.ref.value
versions.drawCount = values.drawCount.ref.version versions.drawCount = values.drawCount.ref.version
} }
if (values.instanceCount.ref.version !== versions.instanceCount) { if (values.instanceCount.ref.version !== versions.instanceCount) {
// console.log('instanceCount version changed') // console.log('instanceCount version changed')
ctx.instanceCount += values.instanceCount.ref.value - instanceCount
ctx.instancedDrawCount += values.instanceCount.ref.value * drawCount - instanceCount * drawCount
instanceCount = values.instanceCount.ref.value instanceCount = values.instanceCount.ref.value
versions.instanceCount = values.instanceCount.ref.version versions.instanceCount = values.instanceCount.ref.version
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment