2009-06-03 11 views
8

Che cos'è un semplice effetto script pixel shader per applicare luminosità e contrasto?Aiuto con effetto Pixel Shader per luminosità e contrasto

ho trovato questo, ma non sembra essere corretta:

sampler2D input : register(s0); 
float brightness : register(c0); 
float contrast : register(c1); 

float4 main(float2 uv : TEXCOORD) : COLOR 
{ 
    float4 color = tex2D(input, uv); 
    float4 result = color; 
    result = color + brightness; 
    result = result * (1.0+contrast)/1.0; 

    return result; 
} 

grazie!

+1

Sicuramente dividendo da '1.0' nella penultima riga del tuo esempio non ha alcun effetto ... –

risposta

22

È questo quello che stai cercando?

float Brightness : register(C0); 
float Contrast : register(C1); 

sampler2D Texture1Sampler : register(S0); 

float4 main(float2 uv : TEXCOORD) : COLOR 
{ 

    float4 pixelColor = tex2D(Texture1Sampler, uv); 
    pixelColor.rgb /= pixelColor.a; 

    // Apply contrast. 
    pixelColor.rgb = ((pixelColor.rgb - 0.5f) * max(Contrast, 0)) + 0.5f; 

    // Apply brightness. 
    pixelColor.rgb += Brightness; 

    // Return final pixel color. 
    pixelColor.rgb *= pixelColor.a; 


return pixelColor; 
} 

--- Testato con shazzam Shader Editor http://shazzam-tool.com

+0

Hmmm. Pensavo che questa domanda fosse di questa settimana, ora vedo che è stato chiesto un anno fa. –

+0

... ed è ancora una valida risposta nel 2013. Sto vagando quanto sia difficile aggiungere anche la saturazione ... :) – Cesar

+2

@Cesar dannazione, anche a me! (Ti terrò a posto ragazzi se smth) – mlvljr

Problemi correlati