Quantcast
Channel: Community | MonoGame - Latest topics
Viewing all articles
Browse latest Browse all 6821

Effect file

$
0
0

@Tankerpat wrote:

Hi guys

I am new in monogame and sorry for my bad english level.

I want to transform all my XNA project but fx files have problems.

First it's not possible to declare array struct, "unsupported parameter class".

So I had make a new effect file with variable array but update postion doesn't work.

Can you help me?
What is a difference between ->

float4 position;
float4 color;
float invRadius;
float4 ambientColor;
int screenWidth;
int screenHeight;
sampler ColorMap : register(s0);
sampler NormalMap = sampler_state 
{
    Texture = <normaltexture>;   
}; 
float4 DeferredNormalPS(float4 Position : SV_Position, float4 Color : COLOR0, float2 texCoord : TEXCOORD0) : COLOR0
{
    float4 base = tex2D(ColorMap, texCoord);
    float3 normal = normalize(tex2D(NormalMap, texCoord) * 2.0f - 1.0f);

float3 PixelPosition = float3(screenWidth * texCoord.x, screenHeight * texCoord.y,0);

float2 Direction;
float Distance;

float4 finalresult = 0;

float modifer = 1; //max((1 - atten), 0);

Direction = position * normal - PixelPosition*normal;

invRadius = 1 / invRadius;

Distance = saturate(1 / length(Direction) * invRadius);

finalresult = (Distance * color * 1);

return base * ((ambientColor * 1) + finalresult);// *((ambientColor * 1) + (Distance * color[0] * 1));
}
    
technique Deferred
{
    pass Pass0
    {
        PixelShader = compile ps_4_0_level_9_1 DeferredNormalPS();
    }
}

and this

float4 position [1];
float4 color [1];
float invRadius [1];
float4 ambientColor;
int screenWidth;
int screenHeight;
sampler ColorMap : register(s0);
sampler NormalMap = sampler_state 
{
    Texture = <normaltexture>;
}; 
float4 DeferredNormalPS(float4 Position : SV_Position, float4 Color : COLOR0, float2 texCoord : TEXCOORD0) : COLOR0
{
    float4 base = tex2D(ColorMap, texCoord);
    float3 normal = normalize(tex2D(NormalMap, texCoord) * 2.0f - 1.0f);

float3 PixelPosition = float3(screenWidth * texCoord.x, screenHeight * texCoord.y,0);

float2 Direction [1];
float Distance [1];

float4 finalresult = 0;
    for(int i =0; i<= NUMBEROFLIGHT; i++)
    {
        Direction[i] = position[i] * normal - PixelPosition*normal;
        invRadius[i] = 1 / invRadius[i];

    Distance[i] = saturate(1 / length(Direction[i]) * invRadius[i]);

    finalresult += (Distance[i] * color[i] * 1);
}

return base * ((ambientColor * 1) + finalresult);// *((ambientColor * 1) + (Distance * color[0] * 1));
}
    
technique Deferred
{
    pass Pass0
    {
        PixelShader = compile ps_4_0_level_9_1 DeferredNormalPS();
    }
}

Thank you in advance

Posts: 1

Participants: 1

Read full topic


Viewing all articles
Browse latest Browse all 6821

Trending Articles