Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!

1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


Member Since 02 Apr 2012
Offline Last Active Apr 16 2014 06:48 AM

Topics I've Started

The best method to use for reflection on ocean waves

08 September 2013 - 11:35 AM


I'm looking for a method to render reflections in ocean waves. The scene in question contains several meter high waves near a coastal harbor. Different kinds of objects are floating in the water. So I want these dynamic objects as well as the surrounding static geometric to reflect in a convincing manner. The reflection is rather distorted by ripples so some degree of inaccuracy can be accepted. Does anybody know of a good method to use for this?


Atm a variant of planar reflection is used, which looks acceptable when the waves are small to medium sized but when they're getting larger all sorts of artifacts appears. The method can't be too expensive to compute either or I won't be able to use it.



Thanks :-)

Dark particles almost disappear in game

07 May 2013 - 04:17 AM


I’m having this problem with transparency on particles that I can’t really get my head around. It appears that bright alpha blended particles show up much more pronounced in game than dark ones. I hacked the pixel shader so that I could toggle the output RGB from darkest (0.0f) to brightest (1.0f), with alpha value identical. I would have expect both to contribute approximately the same, maybe appear a little different dependent on the background but as you can see the dark particles almost disappear:




Does anybody know why this might be happening? The platform I'm running on is PC, Directx11. I took a look in some profiling tools the black smoke are written to the colour buffer with the format DXGI_FORMAT_R16G16B16A16_FLOAT. The blend settings are:



            BlendEnable           1

            SrcBlend   D3D11_BLEND_SRC_ALPHA

            DestBlend                D3D11_BLEND_INV_SRC_ALPHA

            BlendOp   D3D11_BLEND_OP_ADD

            SrcBlendAlpha       D3D11_BLEND_SRC_ALPHA

            DestBlendAlpha    D3D11_BLEND_INV_SRC_ALPHA

            BlendOpAlpha       D3D11_BLEND_OP_ADD

            RenderTargetWriteMask  D3D11_COLOR_WRITE_ENABLE_ALL


I tried with a few different blend settings with no improvement. I tried pre-multiplied alpha as well. Each particle is setup to have a small alpha value if I crank it up the dark particles appear more but that makes the bright particles over-saturated. I need to have dynamically both bright and dark particles from the same emitter as I'm applying lighting to the particles. Has anybody come across this problem before?





Is it possible to overload the ID3D11Device?

19 September 2012 - 08:55 AM

Is it possible to overload the ID3D11Device in DirectX 11? I want the device to behave exactly like normal except for when resources are created in debug mode. Then I want to attach a memory tracking interface through the SetPrivateData functionality. When it comes to the code I manage by myself a wrapper object around the device would probably be all fine. However I would also like to be able to track allocations when the device gets passed to third party libraries. I created a very simple test environment with my custom device inheriting from ID3D11Device. But D3D11CreateDeviceAndSwapChain takes a double pointer to a ID3D11Device so I’m not sure it will be possible this way? Does anybody know how I can make this or is it just simply impossible?


Is it possible to obtain what flags a shader was created with?

27 July 2012 - 04:50 AM

In the situation where you're having compiled shaders under source control is it possible to write a check-in test that examin what flags the shaders been built with. Most common you want to see that no debug shaders get checked-in.

So what I want to know -Is it possible to obtain infromation of what flags a particular shader been built with?

Cheers :-)

How to implement pcf by hand?

07 June 2012 - 03:52 PM

I’m currently porting a shadow system from Xbox 360 to DirectX 11. As a reference we want code with the same functionality to run on DirectX. The problem is that I can’t get the bilinear pcf interpolation to work properly. I tried many variants of the code but didn’t reach a satisfying result. This is how the code stands atm:
float4 vFrac; 

// Clamp the lookup coord so they will be in complete sync with the bilinear weights
vecFrac.xy = modf((vShadowCoord.xy) * float2(768.0f, 768.0f), vShadowCoord.xy);
vShadowCoord.xy /= float2(768.0f, 768.0f);

// Compute the bilinear weights
vecFrac.zw = float2(1.0f, 1.0f) - vecFrac.xy;		 
float4 vBilinearWeights = vecFrac.zxzx * vecFrac.wwyy;

float4 vSamples;

// Read the 4 neighbours
vSamples.x = shadowMap.Sample(pointSampler, offsetCoord.xy, int2( 0.0, 0.0 )).x;
vSamples.y = shadowMap.Sample(pointSampler, offsetCoord.xy, int2( 1.0, 0.0 )).x;
vSamples.z = shadowMap.Sample(pointSampler, offsetCoord.xy, int2( 0.0, 1.0 )).x;
vSamples.w = shadowMap.Sample(pointSampler, offsetCoord.xy, int2( 1.0, 1.0 )).x;

// Compute the depth comparision for each tap
vShadowCoord.z -= 0.001f;
vSamples = step(vShadowCoord.zzzz, vSamples);

// The result
float shadow = dot(vSamples, vecBilinearWeights);
If I can get this to work I can increase the number of taps and implement other filters as well. Hardware accelerated pcf(SampleCmpLevelZero) works fine and I don’t think there’s any wrong with the texture resource.

Does anybody know how I can implement proper bilinear texture filtering on DirectX 11 without using SampleCmpLevelZero? The artefacts I experience are sharp edges where the “interpolation” seems to start sudden. As the camera moves around the penumbra flickers like the sampling was dependent on the viewing angle.