# Why not real 3d noise textures and mapping?

HI
Im coming from 3dsmax to TD and before I go further I would like to understand why there are only faux 3D/4D noise textures and sliced 3d mapping in TD?
It seems like such a missed opportunity and and real headache to work around.
In 3dsmax a 3d material sits as you would expect it should.

If this is just too hard for realtime or something that derivative hasn’t got around to yet I would love to know then I will post it into the wish list.
thanks a lot

Nice Idea. Looks lovely. That also def is possible by editing the default PhongShader a little bit by adding this function:

vec3 noised_position( vec3 spacePosition ) {
float r = TDPerlinNoise( vec4(spacePosition, 1) );
float g = TDPerlinNoise( vec4(spacePosition, 2) );
float b = TDPerlinNoise( vec4(spacePosition, 3) );
return (vec3(r, g, b) + 1) / 2;
}

And by invoking that function in the diffuseSum calculation

diffuseSum = uDiffuseColor.rgb * iVert.color.rgbnoised_position(iVert.worldSpacePos);

Another fun way to achieve 3d noise in a less efficient but very visible way with out custom shaders is to utilize the second input of the Noise TOP which accepts coordinates of anykind uv, or uvw etc.

You’ll want to pass in a 32 bit texture where instead of the usual uv 2d coords, you’ve shoved the 3d world space coordinates into that variable.

One way to do this is with the point SOP.

the main advantage of doing this is for learning and iterating on ideas with noise quickly. once you establish a look, and want to go for efficiency, it’s probably worth recreating it with a 3d noise shader like @alphamoonbase mentioned!

post_3dNoise.1.toe (4.7 KB)

2 Likes

Few! This all looks great. thanks for the help guys

HI Alphamoonbase
Is this something that can be added in the Phong parameters?
As I cannot see where I could put this.
Or if not where could I find out how to do it?
thanks a lot

You will have to add this in to your shader as it is not integrated from the get go.
Check this tutorial by Markus Heckmann to get a better understanding how to implement your custom material: