software-mansion / software-mansion/TypeGPU
bug: Mixing shell-less vertex with shelled fragment fails if vertex returns scalars
Open
Nobody has claimed this yet.
bug
- Dominant language
- TypeScript
- Stars
- 3.2k
- Forks
- 122
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 34
Description
import tgpu, { d } from 'typegpu';
const root = await tgpu.init();
const Vertex = d.struct({
position: d.vec3f,
roughness: d.f32,
});
const vertexLayout = tgpu.vertexLayout(d.arrayOf(Vertex));
const fragment = tgpu.fragmentFn({
in: { roughness: d.f32 },
out: d.vec4f,
})(({ roughness }) => {
'use gpu';
return d.vec4f(roughness, 0, 0, 1);
});
root.createRenderPipeline({
attribs: vertexLayout.attrib,
// Shell-less vertex: roughness is inferred as value type `number`
vertex: ({ position, roughness }) => {
'use gpu';
return {
$position: d.vec4f(position, 1),
roughness,
};
},
// Typed fragment: roughness requires schema type `d.F32`
fragment,
targets: { format: 'rgba8unorm' },
});
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the TypeScript example in the issue and trace render-pipeline validation where the shell-less vertex output is matched with the typed fragment input. The work is done when a scalar returned by the vertex can be consumed by the fragment without the schema-type mismatch shown in the example.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- computer-graphics
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100