tekcor
July 22, 2014, 5:01pm
1
Hi,
I want to find a way how to make instanced tesselation displacement with multiple textures and dynamic level of detail.
It’s still a way to go and right now I am stuck with the instancing.
Basically the grid geometry is instanced. I am not sure if the instancing index gets through the tesselation gfx, maybe that is the issue why it shows only one tile of the water that I use for this test patch.
If anyone has an idea whats wrong or a direction how i could use multipe textures for the displacement, thanks!
Cheers
Tesselation Instanced Displacement (104.9 kB)
tekcor
July 23, 2014, 11:44pm
2
update
okey I got the instancing to work… it is possible to make large amount of displaced meshes - pretty cool.
Everything happens in the tesselation gfx now.
Now im stuck on the next step:
Displacing every instance with a seperate texture from an texture array.
I created the texture array which is sampling from one single texture.
There is simply a test texture array right now with n numbers.
Have a look in the domain shader - I think there is the twist
float vHeight = tex.SampleLevel(linearSampler,float3(Tc.xy,slice), 0) * cAmb;
p += n * (vHeight * DisplacementFactor);
Instanced Tesselation Texture Array WaterExample.rar (108.5 kB)
tekcor
July 26, 2014, 11:39pm
3
Okey it seems like the sampling of the texturearray just doesnt work in the domain shader as expected.
Does someone know how it could be possible to sample textures from a 2d texture array?
float vHeight = tex.SampleLevel(linearSampler,float3(Tc.xy,SLICE), 0)
According to this it should work like this SampleLevel (DirectX HLSL Texture Object) - Win32 apps
I can not use the function SAMPLE in the domain shader. So I can not just copy the way how it is done in the TextureArray helppatch.
If I use a manual array (Texture2D texN ) I can not use dynamic indexes for the sampling - So only the TextureArray is an option.
Also I can not bring the Instance ID in the domainshader … SV_InstanceID gives error - no ds5.0 supported semantic
Check it out guys it is only this line of code left for infinite terrain generation.
well u can pass it as variable from vs
Texture2DArray texture2d;
float4 col = texture2d.Sample(linearSampler,float3(input.uv.xy,index));
and u need type uint i think