LOG: logger.log('NanoPow WebGL createCanvas', 'requested size', size)
LOG: logger.log('NanoPow WebGL createCanvas', 'MAX_VIEWPORT_DIMS', MAX_VIEWPORT_DIMS)
size = Math.min(size, ...MAX_VIEWPORT_DIMS)
- size = Math.floor(size / 0x100) * 0x100
+ size = (size >>> 8) << 8
canvas.height = canvas.width = size
LOG: logger.log('NanoPow WebGL createCanvas', 'canvas size', canvas.height, canvas.width)
LOG: logger.log('NanoPow WebGL createCanvas', 'drawingBuffer size', gl.drawingBufferHeight, gl.drawingBufferWidth)
if (canvas.height !== gl.drawingBufferHeight
|| canvas.width !== gl.drawingBufferWidth
) {
- size = Math.floor(Math.min(gl.drawingBufferHeight, gl.drawingBufferWidth) / 0x100) * 0x100
+ size = ((gl.drawingBufferHeight < gl.drawingBufferWidth ? gl.drawingBufferHeight : gl.drawingBufferWidth) >>> 8) << 8
canvas.height = canvas.width = size
}
LOG: logger.log('NanoPow WebGL createCanvas', 'final size', size)
try {
reset()
drawEffort = effort
- createCanvas(drawEffort * 0x100)
+ createCanvas(drawEffort << 8)
compile()
} catch (err) {
reset()
const MAX_VIEWPORT_DIMS = gl.getParameter(gl.MAX_VIEWPORT_DIMS)
canvas.height = MAX_VIEWPORT_DIMS?.[0] ?? 0x1000
canvas.width = MAX_VIEWPORT_DIMS?.[1] ?? 0x1000
- return Math.min(gl.drawingBufferHeight, gl.drawingBufferWidth)
+ return gl.drawingBufferHeight < gl.drawingBufferWidth ? gl.drawingBufferHeight : gl.drawingBufferWidth
})(new OffscreenCanvas(0, 0))
function random (size = 64) {
function average (times, type, effort) {
const averages = stats(times)
const title = type === 'WebGPU'
- ? `NanoPow (${type}) | Effort: ${effort} | Dispatch: ${(0x100 * effort) ** 2} | Threads: ${64 * (0x100 * effort) ** 2}`
+ ? `NanoPow (${type}) | Effort: ${effort} | Dispatch: ${(effort << 8) << 1} | Threads: ${64 * (effort << 8) << 1}`
: type === 'WebGL'
- ? `NanoPow (${type}) | Effort: ${effort} | Work per frame: ${Math.min(0x100 * effort, glSize) ** 2}`
+ ? `NanoPow (${type}) | Effort: ${effort} | Work per frame: ${Math.min(effort << 8, glSize) << 1}`
: `NanoPow (${type}) | Effort: ${effort}`
return {
[title]: averages