Another quick update. I have been working on adding craters to the procedural moon. I implemented a Voronoi diagram shader in HLSL and then I tweak it with quite a few different parameters to generate conical pits that are distorted slightly with fBm noise.
I tried for quite a while to get rims around the edges of the craters, but I couldn't get it to work. I tried using a colormap to alter the Voronoi results, but I was having issues with the it. I will continue to tinker around with it because I think having rims would add quite a bit.
Interesting fact: If I add even more fBm noise to the crater distortions, it forms pretty cool canyons:
2 comments:
Hello, I'm a software engineer from Spain specialized in computer graphics development and I'm learning HLSL. I try to write a HLSL pixel shader for procedural textures and I started with fBm, but I haven't success. can u help me?
I started with 2D noise texture created in photoshop, I sample it in HLSL and then apply the fBm:
////////////////////////////
//fBm Pixel Shader
////////////////////////////
float sum = 0.0;
float amp = 1.0;
float octaves = 2.0f;
float lacunarity = 2.0f;
float gain = 1.0f;
float x = IN.UV.x;
float y = 0.f;
float z = IN.UV.z;
for (int i=0;i(octaves;i+=1)
(
sum += amp * tex3D(NoiseSamp,
IN.WoodPos).x;
amp *= gain;
x *= lacunarity;
y *= lacunarity;
z *= lacunarity;
)
float3 res = float3(sum, sum, sum);
return float4(res, 1.0f);
Is this correct? Where is the mistake?
Thanks in Advance.
Joel.
Well, the biggest problem you have is that you are not using your scaled texture coordinates (x, y, and z variables).
Your for loop should look more like this:
for (int i=0;i(octaves;i+=1)
(
sum += amp * tex3D(NoiseSamp,
float3(x, y, z)).x;
amp *= gain;
x *= lacunarity;
y *= lacunarity;
z *= lacunarity;
)
Post a Comment