Stratos

Autor Tema: Glow shader  (Leído 459 veces)

Negor

  • Stratos
  • Mensajes: 12
    • Ver Perfil
Glow shader
« en: 28 de Noviembre de 2011, 06:02:11 pm »
Hola

Estoy trabajando en este shader pero tengo un problema al combinar el blur con la escena final.



Este es el resultado final donde e marcado con circulos rojos se puede ver como el glow es menos intenso cuando tiene un color negro de fondo, e probado con varias formas de combinarlo pero todas tienen el mismo problema, lo q quiero es q el glow sea igual de intenso independientemente de lo q alla al fondo.

Saludos
« última modificación: 28 de Noviembre de 2011, 06:03:28 pm por Negor »

Gallo

  • Stratos
  • Mensajes: 272
    • Ver Perfil
Re: Glow shader
« Respuesta #1 en: 28 de Noviembre de 2011, 06:12:38 pm »
Cual es la formulita que estas utilizando para calcular el color del pixel? puedes pegarla aquí?

Negor

  • Stratos
  • Mensajes: 12
    • Ver Perfil
Re: Glow shader
« Respuesta #2 en: 28 de Noviembre de 2011, 07:25:19 pm »
E probado muchas maneras distintas pero con todas tengo el mismo problema.

Código: [Seleccionar]
float CalcLuminance(float4 color)
{
    return max(dot(color, float3(0.299f, 0.587f, 0.114f)), 0.0001f);
}

float4 frag(VOut I) : COLOR0
{
float4 blur = tex2D(BlurTex, I.uv);
float4 c = tex2D(SceneTex, I.uv);

c *=baseIntensityA * CalcLuminance(c*baseIntensityB);

c *= (1 - saturate(blur));
return c+blur;
}

Tambien e probado sumando solo c+blur y nada.

Edit: baseIntensityA  y baseIntensityB son solo floats para controlar el color
« última modificación: 28 de Noviembre de 2011, 07:28:02 pm por Negor »

XÑA

  • Stratos Élite
  • Stratos
  • ***
  • Mensajes: 461
    • Ver Perfil
Re: Glow shader
« Respuesta #3 en: 29 de Noviembre de 2011, 11:27:47 am »
¿y porqué no sumas y ya está? Así es como yo  lo hacía, con additive.

Gallo

  • Stratos
  • Mensajes: 272
    • Ver Perfil
Re: Glow shader
« Respuesta #4 en: 29 de Noviembre de 2011, 12:06:24 pm »
claro, esque si multiplicas por negro.... es negro si o si, lo que tienes es que multiplicar por su alpha el blur y  1- alpha la escena y sumarlos o simplemente sumarlos a ver como queda.

Negor

  • Stratos
  • Mensajes: 12
    • Ver Perfil
Re: Glow shader
« Respuesta #5 en: 29 de Noviembre de 2011, 03:02:31 pm »
Es lo primero q hice simplemente sumar y tenia el mismo problema por eso me puse a probar otras formas y es raro por q si un pixel en este caso verde de 0.2 se suma a un color negro el resultado deberia ser 0.2 asi q no se q pasa.




Esta imagen la e echo con un blur*5 para q se aprecie bien la diferencia con el fondo blanco y el negro.



tamat

  • Stratos
  • Mensajes: 1450
    • MSN Messenger - tamatito@hotmail.com
    • Ver Perfil
    • tamats.com
    • Email
Re: Glow shader
« Respuesta #6 en: 29 de Noviembre de 2011, 04:17:12 pm »
puedes mostrar tambien la textura de blur a secas? tal vez tu blur no está funcionando bien, por otra parte tienes un radio muy bajo.
Por un stratos menos tenso

Negor

  • Stratos
  • Mensajes: 12
    • Ver Perfil
Re: Glow shader
« Respuesta #7 en: 29 de Noviembre de 2011, 05:00:41 pm »
Este es todo el proceso q hago

1º la escena original


2º la escena solo con los glowmap, lo e dividido en 2 imagenes pero se hacen en el mismo shader para q no alla confusiones.


3º Blur


Gracias

Negor

  • Stratos
  • Mensajes: 12
    • Ver Perfil
Re: Glow shader
« Respuesta #8 en: 29 de Noviembre de 2011, 08:36:43 pm »
Bueno e cambiado totalmente el shader del blur, aunque no me gusta por q lo e copiado me gusta hacer las cosas por mi mismo, pero el caso es q a mejorado bastante la imagen final.



Tambien e cambiado la forma de combinarlo.

Código: [Seleccionar]
return c+blur*(1-CalcLuminance(blur)+1);
Asi las zonas de blur oscuras se hacen un poco mas luminosas y las muy brillantes algo mas oscuras.

Aun se ve algo mas de blur con el fondo blanco pero supongo q ya esta algo mas aproximado a como debe ser.