public interface ITextureCpuOperationAn operation in a plan that runs on the CPU rather than as a compute dispatch.
Remarks
⚠ A deliberate exception to doc 48 § D3, and it exists for exactly one node. § D3 says every atomic operation is a Raven compute shader and that there is no CPU implementation of any node — because a CPU twin of a kernel turns every parity test into a claim that two transcriptions agree rather than that either is right. § 4.6 names the one entry in the catalogue that is not a kernel: Normal → Height is a Poisson solve, and doc 42 § B1's Vixen.Geometry.Uv/Solving/ConjugateGradient.cs is the solver. #688 is the finding that a plan could not express it at all.
⚠ What stops this becoming the norm is that it is not an escape hatch from writing a kernel — it is a much worse way to compute a picture, and the cost is structural. A dispatch is recorded into the list already in flight; a CPU op ends that list, waits for the device, copies every input into host memory, runs single-threaded, copies the answer back and starts a new list. That is two full pipeline drains in the middle of a bake, plus the bandwidth, and a chain of them serialises the entire evaluation. The test of whether a node belongs here is not "would this be easier in C#" — it is "is there a GPU formulation at all". For a Poisson solve there is not one worth having: low frequencies converge in O(n²) Jacobi sweeps on a grid this size, so the GPU version is thousands of dispatches and a different convergence story from the one § 4.6 specified. Anything that can be a kernel is a kernel, and § D5's "anything that has to be written in C# to be fast is a bug in the atomic set" is the standing test.
It is not a place for a CPU twin either. An implementation here that reproduces what some .rvn already does is the thing § D3 bans, whatever this interface makes possible — and it would be found by the same parity test being meaningless.
Fields and properties (1)
string NameWhat to call this in a message, when the op's own kernel name is not enough.
Methods (1)
void Run(in TextureCpuInvocation invocation)Fills the output image from the inputs.
Used by (8)
- NormalToHeightOperationVixen.Editor.TextureGraph
- RecordTheInputVixen.Editor.TextureGraph.Tests
- TextureKernelSabotageTestsVixen.Editor.TextureGraph.Tests
- TextureNormalToHeightDeviceTestsVixen.Editor.TextureGraph.Tests
- TextureNormalToHeightTestsVixen.Editor.TextureGraph.Tests
- TextureOpVixen.Editor.TextureGraph
- TexturePlanEvaluatorVixen.Editor.TextureGraph
- TransposeRgba8Vixen.Editor.TextureGraph.Tests