Download

Help with HLSL

Hello! I don’t know anything about HLSL and I really want some help with it!

First of All: I have a code here that creates a Blur around the character and with that I can create a nice Glow effect around the character. I took it fro this tutorial:

Ok, now is the problem: I need to occlude the effect when an object or anything that blocks the camera from viewing the character.

Some people in the comments made the statement that I can multiply something by something but I really don’t know anything about it! Where to put it, how to put it when to put it, can someone give me a resolution?

Here’s the code inside the custom node:

static const float PI2 = 3.14159265359f * 2;
int CDIndex = 13;
int CSIndex = 25;
Steps = clamp(floor(Steps), 1, 128);
RadialSteps = clamp(floor(RadialSteps), 1, 128);
float stepSize = Radius / Steps;
float radialStepSize = PI2 / RadialSteps;
float result = 0.0f;
float stencil = 0.0f;

for (int i = 1; i <= Steps; ++i)
{
    float currStep = i * stepSize;
    for (int j = 0; j < RadialSteps; ++j)
    {
        float angle = j * radialStepSize;
        float2 coord = float2(cos(angle), sin(angle)) * currStep + UV;
        float sample = SceneTextureLookup(ViewportUVToSceneTextureUV(coord, CDIndex), CDIndex, false);
        result += (MaxDistance - clamp(sample, 0, MaxDistance)) / MaxDistance;
        stencil = max(stencil, SceneTextureLookup(ViewportUVToSceneTextureUV(coord, CSIndex), CSIndex, false));
    }
}
return float2(result / (RadialSteps * Steps), stencil);

The creator said this:

You can compare the scene depth to the object’s custom depth and if the custom depth is higher than the scene depth, it means it’s behind something.

Something like ((SceneDepth + 0.1) - CustomDepth)->Ceil->Saturate should give you either 0 or 1. 0 if it’s behind something and 1 otherwise. Than you multiply that by the effect intensity or something to have it nullified when behind stuff.

I tried something with nodes, multiplying the output with the Custom Depth + SceneDepth, and got the occlusion by doing it, but that didn’t influenced a thing with the Custom Node. Thanks.