Skip to main content

@novorender/api / DeviceProfile

Interface: DeviceProfile

Defined in: @novorender/src/core3d/device.ts:13

Information about current device performance and limitations.

Remarks​

This information is normally not available in the browser for security reasons. Hence, we make a best guess estimate based on known device names, GPU model names, a basic benchmark test. Overestimating may crash the browser, so when in doubt we go with a low estimate. Underestimating will produce fewer details and lower resolution/quality than your device can handle. Knowledgeable users may adjust these settings manually, but should be warned to do so with caution.

Properties​

detailBias​

readonly detailBias: number;

Defined in: @novorender/src/core3d/device.ts:36

Geometry detail bias.

Remarks​

A value of 1.0 is a reasonable default for mid-end devices and acts as a baseline. Smaller values will produce less geometric details, which may improve rendering performance at the cost of geometric error. Larger values will produce more geometric details, which in turn requires more powerful GPU to keep performance acceptable. The formula is essentially this: acceptable_geometric_error = geometry_max_error / detailBias


features​

readonly features: DeviceFeatures;

Defined in: @novorender/src/core3d/device.ts:15

What features should be enabled or disabled on this device.


framerateTarget​

readonly framerateTarget: number;

Defined in: @novorender/src/core3d/device.ts:55

Target framerate to aim for on this device.

Remarks​

Most devices can display up to 60 FPS, which is perceived as nice and fluid. However, lower frame rates enables more detail and fidelity. 30 or even 20 frames per second may be acceptable on weak devices. Note that this value is merely a hint for automatic adjustments and does not guarantee the effective framerate.


limits​

readonly limits: DeviceLimits;

Defined in: @novorender/src/core3d/device.ts:22

What are the practical resource limitations of this device.

Remarks​

The effectively available resources are affected by other resources used by the browser and other apps. Make sure to put these values well below the nominal/theoretical limits to allow for this.


materialTextureRendering​

readonly materialTextureRendering: "None" | "Basic" | "PBR";

Defined in: @novorender/src/core3d/device.ts:63

How to render material textures.

Remarks​

Mobile devices may not have enough memory or performance for physically based rendering (PBR). In these cases, we revert to a faster and more basic rendering technique. The weakest devices will only render the average color of the texture.


materialTextureResolution​

readonly materialTextureResolution: null | 1024 | 256 | 512;

Defined in: @novorender/src/core3d/device.ts:70

Resolution to use for material textures.

Remarks​

Higher resolutions requires more memory and are more taxing on memory bandwidth/performance. Most mobile devices will not benefit much from higher resolutions as their screens are much smaller than a PC monitor.


quirks​

readonly quirks: DeviceQuirks;

Defined in: @novorender/src/core3d/device.ts:26

What particular quirks/bugs does this device have.


renderResolution​

readonly renderResolution: number;

Defined in: @novorender/src/core3d/device.ts:46

Render resolution bias.

Remarks​

A value of 1.0 is a reasonable default for mid-end devices and acts as a baseline. Smaller values will reduce resolution, which may improve rendering performance at the cost of less image fidelity. Larger values will increase resolution, which in turn requires more powerful GPU to keep performance acceptable. The formula is essentially this: effective_resolution = default_resolution * renderResolution


tier​

readonly tier: GPUTier;

Defined in: @novorender/src/core3d/device.ts:78

General GPU tier for this device.

Remarks​

0 is weakest, while higher tiers represent more powerful GPUs. The tier system is a gross simplification of GPU performance estimation and does not allow for device-specific fine tuning. Use as a starting point only.