SD0044
On this page

SD0044

Core code

f64 in an interpolated @location IO field

The registry text and every compiler message on these pages are the compiler's own English.

In the front end

A "use typeshade" file never reaches this check with the same mistake: the front end refuses it first, under its own code. This program, compiled at build time, gets:

example.shade.ts
"use typeshade"
@fragment
export function main(@location(0) d: f64): vec4 {
return vec4(f32(d), 0., 0., 1.)
}

TS8038 error, line 4: Parameter "d" carries f64: an emulated double is a pair of f32 words, and a @location varying interpolates each word on its own, which is not the interpolation of the double. Narrow it with f32(x), or compute the double in the stage that needs it — a uniform or storage binding carries an f64 and every stage can read one.

How to fix it

The registry's hint: interpolating hi/lo pairs is numerically wrong — narrow first (f32(x), or toF32(x) in the fn() EDSL), or read the double where it is needed: a uniform or storage binding carries an f64 and every stage can read one

See also

TS8038 F64_ENTRY_IO
An emulated double (f64, a vec64) on an entry's IO boundary — a @location parameter, a @location field of an IO struct, or an entry's return.

Source

Where the compiler raises this code at commit 26de7be8, one line per file:

Edit this page Report a problem