diff --git a/src/drawables/drawable-descriptor.ts b/src/drawables/drawable-descriptor.ts index 6d4a9c8..058d884 100644 --- a/src/drawables/drawable-descriptor.ts +++ b/src/drawables/drawable-descriptor.ts @@ -52,6 +52,8 @@ export interface DrawableDescriptor { * * For each step, a shader will be generated. And at runtime the closes matching * shader will be used to render a given part of the scene. + * + * Must contain 0 as a value. */ shaderCombinationSteps: Array; diff --git a/src/drawables/drawable.ts b/src/drawables/drawable.ts index 2ebaa7a..137c4fb 100644 --- a/src/drawables/drawable.ts +++ b/src/drawables/drawable.ts @@ -33,6 +33,7 @@ export abstract class Drawable { */ protected abstract getObjectToSerialize(transform2d: mat2d, transform1d: number): any; + /** @internal */ public serializeToUniforms( uniforms: any, transform2d: mat2d, diff --git a/src/graphics/graphics-library/program/uniform-array-autoscaling-program.ts b/src/graphics/graphics-library/program/uniform-array-autoscaling-program.ts index 0ba43c8..e5063a9 100644 --- a/src/graphics/graphics-library/program/uniform-array-autoscaling-program.ts +++ b/src/graphics/graphics-library/program/uniform-array-autoscaling-program.ts @@ -31,6 +31,8 @@ export class UniformArrayAutoScalingProgram implements IProgram { const promises: Array> = []; + this.checkDescriptorValidity(descriptors); + for (const combination of getCombinations( descriptors.map((o) => o.shaderCombinationSteps) )) { @@ -48,6 +50,19 @@ export class UniformArrayAutoScalingProgram implements IProgram { await Promise.all(promises); } + private checkDescriptorValidity(descriptors: Array) { + const descriptorsWithoutZero = descriptors.filter( + (d) => !d.shaderCombinationSteps.includes(0) + ); + if (descriptorsWithoutZero.length > 0) { + throw new Error( + `Descriptors must contain a '0' step. Count macros for the offending descriptors: ${descriptorsWithoutZero.map( + (d) => d.uniformCountMacroName + )}` + ); + } + } + public setDrawingRectangleUV(bottomLeft: vec2, size: vec2) { this.drawingRectangleBottomLeft = bottomLeft; this.drawingRectangleSize = size; diff --git a/src/graphics/rendering/settings/default-runtime-settings.ts b/src/graphics/rendering/settings/default-runtime-settings.ts index beb612d..06bdb8e 100644 --- a/src/graphics/rendering/settings/default-runtime-settings.ts +++ b/src/graphics/rendering/settings/default-runtime-settings.ts @@ -5,7 +5,7 @@ import { RuntimeSettings } from './runtime-settings'; * Contains the default values used for [[RuntimeSettings]]. */ export const defaultRuntimeSettings: RuntimeSettings = { - enableHighDpiRendering: true, + enableHighDpiRendering: false, tileMultiplier: 8, isWorldInverted: false, lightCutoffDistance: 400, diff --git a/src/graphics/rendering/settings/default-startup-settings.ts b/src/graphics/rendering/settings/default-startup-settings.ts index d9e2aeb..1192309 100644 --- a/src/graphics/rendering/settings/default-startup-settings.ts +++ b/src/graphics/rendering/settings/default-startup-settings.ts @@ -7,5 +7,5 @@ export const defaultStartupSettings: StartupSettings = { shadowTraceCount: 16, paletteSize: 256, ignoreWebGL2: false, - enableStopwatch: true, + enableStopwatch: false, };