Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





cómo realizar un subtractive blending ??

Iniciado por _Grey, 24 de Agosto de 2009, 04:40:14 PM

« anterior - próximo »

_Grey

Actualmente para un additive blending hago lo siguiente:


pD3dDevice7->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE , TRUE );

pD3dDevice7->SetRenderState( D3DRENDERSTATE_SRCBLEND , D3DBLEND_SRCALPHA);
pD3dDevice7->SetRenderState( D3DRENDERSTATE_DESTBLEND , D3DBLEND_ONE);


Cómo podría hacer un subtractive blending?? por la naturaleza de la operación, la cual incluye una suma, parece que es imposible.

Hay alguna manera sencilla de hacer subtractive blending?? cuando digo sencilla me refiero a poco más que jugar con el render state, es un código de hace algún tiempo que usa DirectX7.

tamat

quizá haya algun método (inviertiendo, sumando y volviendo a invertir) pero si hablamos de hacerlo a pantalla completa a veces es más facil pintarlo en un rendertarget y aplicar un shader que haga la operacion adecuada.

Aunque me da que en tu caso sería matar moscas a cañonazos
Por un stratos menos tenso

senior wapo

#2
Como hacer subtractive blending con la fixed pipeline (no shaders):

OpenGL con la extensión  EXT_blend_subtract: 
    BlendEquationEXT , FUNC_REVERSE_SUBTRACT_EXT

Direct3D8 y superior:   
    D3DBLENDOP_REVSUBTRACT

Direct3D7 e inferiores, OpenGL sin dicha extensión:
Me temo que te toca aproximar el resultado con dos stages y otros modos de blending (subtract, addsigned2x, etc..),
Vamos, que en la práctica olvidate.

Pogacha


_Grey

Gracias por las respuestas.

Mis temores sobre los parametros del pipeline por defecto son ciertos. Me tocaría usar rendertargets y jugar con los stages de las texturas, usando la superficie de destino como textura de entrada.

Matar moscas a cañonazos, como dice tamat.

Probablemente lo intente aplicar de todas formas, por tener la capacidad más que nada, todo y que sería un proceso bastante costoso en cuestión de rendimiento.

Gracias.

Prompt

No se si esto que voy a decir es lo que buscas. Hay 2 métodos para hacer blending de texturas o render targets etc...

1 Configurando las textura para que al "multiplicarlas" se haga de cierta manera, que es como creo que lo haces o se plantea aquí.
2 Utilizar glBlend, yo lo uso para el Lighting Stage de mi Deferred Rendering. También te digo que uso FBOs y Shaders.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.