Vixen
caa30e12
csharp
public record class TextureCopyAsset

A snapshot of one target in another.

Read the guide page for this →

Remarks

[35 § B1](../../../docs/plan/35-water.md#b1-there-is-no-shading-model-that-can-read-the-scene-behind-it), and the blocker there was the copy rather than the pass. A shading model that integrates absorption over the distance to whatever is behind it has to read the scene colour and then write into it, and writing into a target you are also sampling is undefined — not slow, not approximate, undefined. So the read has to come from a second resource, and that resource has to be a real one the graph knows the lifetime of rather than a barrier somebody remembers to place.

Not water's alone. Anything that reads the frame so far and then contributes to it wants this: refraction, a distortion pass, a heat haze, a UI that blurs what is behind it. The node is written for the general case and water is its first consumer.

⚠ Both resources have to declare the usage. The source needs CopySource and the destination CopyDestination, and neither is in RenderResourceAsset's default. Missing one is a validation error on a debug driver and silently nothing on a release one, so the build refuses it by name instead.

A copy and not a full-screen blit. A blit is a pipeline, a descriptor set and a draw; a copy is a transfer-queue operation the driver can do while the graphics queue is busy. The two are only interchangeable when the formats and sizes match — and when they do not, this refuses rather than silently rescaling, because a scene-colour copy that is quietly half resolution is a refraction that is quietly wrong.

Fields and properties (4)

  • public string Name

    The node's name, for debug groups and for a human reading the file.

  • public bool Enabled

    Whether the node runs.

  • public string Source

    What to copy, which must be declared as a copy source.

  • public string Destination

    Where it goes, which must be declared as a copy destination.

Used by (3)

  • CompositorBuilderVixen.Rendering
  • TypeRegistrationVixen.Rendering
  • Vixen_Rendering_Compositor_TextureCopyAssetSerializerVixen.Rendering