I'm trying to implement a GPU based height map the simplest (and fastest) way that I know how. I passed a (.png, D3DX11CreateShaderResourceViewFromFile()
) texture into the shader, and I'm attempting to sample it for the current pixel value. Seeing a float4
, I'm currently assigning a color value from a channel to offset the y
value.
Texture2D colorMap : register(t0);
SamplerState colorSampler : register(s0);
...
VOut VShader(float4 position : POSITION, float2 Texture : TEXCOORD0, float3 Normal : NORMAL)
{
VOut output;
float4 colors = colorMap.SampleLevel(colorSampler, float4(position.x*0.001, position.z*0.001, 0,0 ),0);
position.y = colors.x*128;
output.position = mul(position, WVP);
output.texture0 = Texture;
output.normal = Normal;
return output;
}
The texture is imported correctly, and I've inserted another texture and was able to successfully blend the texture with another texture (through multiplication of values), so I know that the float4 struct contains values of a sort capable of having arithmetic performed on it.
In the Vertex function, attempting to extract the values yields nothing on a grid:
The concept seemed simple enough on paper...
position
stays within that range, so you're sure you're sampling at the right location. Also, just to be sure: I assume the input image is a grey-scale image? \$\endgroup\$Texture
as the coordinate you sample at? Presumably you're authoring the height map in the same coordinate space as the color map. Also, are you sure you've properly bound the height map texture view? Reading from an unbound texture slot results in all zeros. \$\endgroup\$