Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float3 Outiner(float2 TexCoord, float3 Final) {
- float halfScaleFloor = floor(OUTLINE_THICKNESS * 0.5f);
- float halfScaleCeil = ceil(OUTLINE_THICKNESS * 0.5f);
- float2 uvSamples[4];
- uvSamples[0] = TexCoord - float2(TEXEL.x, TEXEL.y) * halfScaleFloor;
- uvSamples[1] = TexCoord + float2(TEXEL.x, TEXEL.y) * halfScaleCeil;
- uvSamples[2] = TexCoord + float2(TEXEL.x * halfScaleCeil, -TEXEL.y * halfScaleFloor);
- uvSamples[3] = TexCoord + float2(-TEXEL.x * halfScaleFloor, TEXEL.y * halfScaleCeil);
- float Average = 0;
- Average += Decode_MaterialID( EXTRA_MAP.SampleLevel(SAMPLER_POINT_WRAP,uvSamples[0],0).y ).x;
- Average += Decode_MaterialID( EXTRA_MAP.SampleLevel(SAMPLER_POINT_WRAP,uvSamples[1],0).y ).x;
- Average += Decode_MaterialID( EXTRA_MAP.SampleLevel(SAMPLER_POINT_WRAP,uvSamples[2],0).y ).x;
- Average += Decode_MaterialID( EXTRA_MAP.SampleLevel(SAMPLER_POINT_WRAP,uvSamples[3],0).y ).x;
- Average /= 4.0f;
- Average = (Average == 1) ? 0.0f: 1.0f;
- float edge = Average > 0.0f ? 1.0f : 0.0f;
- Final = ((1 - edge) * Final) + (edge * lerp(Final, OUTLINE_COLOR.rgb, OUTLINE_COLOR.a));
- return Final;
- }
Advertisement
Add Comment
Please, Sign In to add comment