Download

Vector transform node not supported for world displacement?

When I try to use the vector transform node (local to world, world to local) I get the error [sm5](Node Transform) Local space in only supported for vertex or pixel shader! Is there another way to perform this operation? Also, what stage of the graphics pipeline is the world displacement calculated at? I’m currently trying to wrap my head around dx-11’s tessellation pipeline. Thanks.

Have you tried the ‘Position Transform’ node?

World Displacement/Tessellation is pretty much entirely done on the hardware (hence why it’s so cheap), so there’s a very minimal amount of information you can give it. I think the regular Transform node needs to take input from a variety of things that are not necessarily available to the GPU.

Transform position node has been depricated so I want to avoid using it. My understanding is that the vector transform node is just multiplying the coordinates by a transform matrix. I’m completely lost as to why this won’t work with world displacement offset.

I believe that in order to transform to those different spaces it needs other information that isn’t neccesarilly available to the hardware part of the shader. Could be wrong but that’s the only reason I can think of.

Also I think that documentation is out-of-date, I’ve been using Position Transform for a while for some more complex shaders and it seems okay! (Also have no idea how World Position could affect it at all).

EDIT: Oohh you could possibly use a HLSL custom node to do the transform manually rather than with an in-built node? The following code didn’t work in HLSL in UDK, but it might with UE4:

mul(vector,matrix)

Just need to Vector Inputs, one called vector, the other called matrix. The matrix is the space you want to transform the vector too. Failing that, you could just create a transform multiplier the long way around with nodes.

This info is outdated indeed, it’s back from the time when people switched from the old UE3 to UDK. You had to position transform the screen coordinates (PostProjection to World, btw) to get world coordinates as there was no WP node yet.

It won’t work as simple as that. There is no way to input or output a matrix from any node. You’d always need to create the matrix inside the custom node.

Position transform won’t work. I get a "cannot convert from ‘struct FMaterialTessellationParamters’ to ‘struct FMaterialPixelParamters’. Coincidentally, when I try to copy paste this error message from the output log, the editor crashes.