I’m trying to replicate the effect of geometry deformation from crimson desert. They clearly use the Screen space shader, as can be seen from the artifacts of the screen edge that they hide well.
rendering of NPCs and vegetation occurs after displacement, so that overlap artifacts occur less frequently, with static geometry.
The offset occurs along the geometric normals according to the final Gbuffer, compute calculates the source and final pixels.
Are there any ways to get the missing pixels without breaking the optimization methods like early Z-Test?
I tried using the UV offset function exclusively on albedo, followed by writing to a separate buffer. In the likeness of:
float2 offset = viewDirTS.xy * heightScale;
uv_out = uv - offset;
to pull out the missing pixels from behind the edges of the screen.
Then a separate reverse projection dispatch is used to return them to their places. Failed attempt.
Perhaps implementing the visibility buffer using the material and geometry pool will help you get the necessary data, but I’m not sure if this is a good idea.
1 Like

