Szerző Téma: Shader manipuláció  (Megtekintve 400 alkalommal)

Shader manipuláció
« Dátum: 2018. Július 11. - 18:10:20 »
0 Show voters
Üdv! Régebben elég jól beleástam magam a lua nyelv szépségeibe, viszont egy időre félre kellett tennem, viszont most újra van időm, úgyhogy kedvem is támadt ezt elővenni. 
 
Nos akkoriban nem igen foglalkoztam úgy különösebben a shaderekkel, ezért is gondoltam, hogy átnézem, hogyan működnek miket lehet velük kihozni etc. Még nagyon kezdetlegesen néztem csak át és lehet a problémám is tök alapvető, csak én kezdőként nem jövök rá.. 
 
Szóval adott egy shader: 
 

// BlurIntense = 4.5
// ColorDivider = 17
 
texture screenSource;
float2 UVSize;
float BlurIntense;
float ColorDivider;
sampler TextureSampler = sampler_state
{
    Texture = <screenSource>;
MinFilter = Linear;
    MagFilter = Linear;
    MipFilter = Linear;
    AddressU = Wrap;
    AddressV = Wrap;
};
static const float2 poisson[16] =
{
        float2(-0.326212f, -0.40581f),
        float2(-0.840144f, -0.07358f),
        float2(-0.695914f, 0.457137f),
        float2(-0.203345f, 0.620716f),
        float2(0.96234f, -0.194983f),
        float2(0.473434f, -0.480026f),
        float2(0.519456f, 0.767022f),
        float2(0.185461f, -0.893124f),
        float2(0.507431f, 0.064425f),
        float2(0.89642f, 0.412458f),
        float2(-0.32194f, -0.932615f),
        float2(-0.65432f, -0.87421f),
   float2(-0.456899f, -0.633247f),
   float2(-0.123456f, -0.865433f),
   float2(-0.664332f, -0.25680f),
   float2(-0.791559f, -0.59771f)
};
float4 PixelShaderFunction(float2 TextureCoordinate : TEXCOORD0) : COLOR0
{
    float4 color = tex2D(TextureSampler, TextureCoordinate);
   
for(int i = 0; i < 16; i++)
    {
        float2 coord= TextureCoordinate.xy + (poisson / UVSize * BlurIntense);
        color += tex2D(TextureSampler, coord);
    }
float value = (color.r + color.g + color.b) / 3.5;
    color.r = color.r / 1.5 + value;
    color.g = color.g / 1.5 + value;
    color.b = color.b / 1.5 + value;

    return(color/ColorDivider);
}
 
technique BlackAndWhite
{
    pass Pass1
    {
        PixelShader = compile ps_2_0 PixelShaderFunction();
    }
}

 
Igazából annyi az egész, hogy elfehéríti a játékos képernyőjén mindent. Viszont én azt szeretném, hogy a ped, tehát maga a karakterünk ez alól kivételt képezzen, arra ne hasson a shader. Tehűt a karakteren kívül minden el legyen fehérítve, viszont látszódjon, ahogy mozog, ugrál karakterünk. Nos ennyi az egész, előre is köszönöm a segítségeket! 

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal