Re: Decals and deferred rendering

Jeff Russell <[email protected]>
Newsgroups gmane.games.devel.algorithms
Message-ID <[email protected]>
Yes, use alpha blending (this is not done in the shader, but instead as
Steve described). You are right that you can't read and write the same
texture in a shader, but you don't need to. It's done in the output merger
stage, which runs after your pixel shader.

Jeff

On Wed, Jan 13, 2010 at 12:04 PM, Steve Legg <[email protected]> wrote:

>  Why can’t you use alphablending for this?  If you are worried that you
> need to leave the alpha channel untouched then you can either use
> D3DRS_COLORWRITEENABLE to write to just the RGB channels, or you could use
> D3DRS_SEPARATEALPHABLENDENABLE and set the alpha blend mode to ZERO/ONE/ADD.
>
>
>
> *From:* Diogo de Andrade [mailto:[email protected]]
> *Sent:* 13 January 2010 5:56pm
>
> *To:* 'Game Development Algorithms'
> *Subject:* Re: [Algorithms] Decals and deferred rendering
>
>
>
> Ehehe, I didn’t explain myself too well… J
>
>
>
> Let’s imagine I just need to do an albedo change, and I want to do it with
> blending (as you suggested, if I recal)…
>
>
>
> I’d get a pixel shader something like:
>
>
>
> float4 decal_pixel_shader(INPUT_DATA in)
>
> {
>
>      float4 source_color=tex2D(rt1,in.uv_screen);
>
>      float4 decal_color=tex2D(decal_texture,in.uv_decal);
>
>      return float4(decal_color.xyz*
> decal_color.a+rt1.xyz*(1-decal_color.a);
>
> }
>
>
>
> So I need to use rt1 as both input and output, and I think that’s a no-no
> in a modern video card… So I fail to see how can I do blending operations on
> the G-Buffer…
>
>
>
> Diogo
>
>
>
> *From:* Jeff Russell [mailto:[email protected]]
> *Sent:* quarta-feira, 13 de Janeiro de 2010 17:20
> *To:* Game Development Algorithms
> *Subject:* Re: [Algorithms] Decals and deferred rendering
>
>
>
> Well, since its a decal, you shouldn't need to use Rt3 as output (you're
> not modifying positions of anything, just painting new material properties
> over the existing geometry). So maybe we confused the terms, I was
> recommending you render into albedo, normal, specular, etc. but not
> position.
>
> Jeff
>
> On Wed, Jan 13, 2010 at 11:14 AM, Diogo de Andrade <
> [email protected]> wrote:
>
> Hi all,
>
> I'm not sure I understood what you and Jeff are recommending, to be
> honest...
>
> Clarifying:
>
> I start rendering to the G-Buffer... I have the buffers organized like
> this:
>
> Rt0.xyz=normal (world space)
> Rt0.w=depth (0..1 normalized)
> Rt1.xyz=albedo
> Rt1.w=ambient intensity
> Rt2.x=specular intensity
> Rt2.y=specular gloss
> Rt2.z=diffuse intensity
> Rt2.w=emissive intensity
> Rt3.xyz=position (world space)
> Rt3.w=unused
>
> Let's imagine I have a maze... I render all walls to these buffers, and now
> it's time to render the decals themselves.
>
> With the G-Buffer still as the rendertarget, I draw the geometry that makes
> up the decals (obtained through intersection of the world geometry with the
> decal frustum)...
> Now, the part I don't understand is how to achieve blending (which would be
> sweet), without having the G-Buffer simultaneously as a render target and
> as
> input texture (which I think is not allowed under the majority of the
> videocards). If I could have that, I'd be able to do whatever I wanted in
> the way of blending and such...
> To be honest, now that I think about it, I'm not even seeing how I can make
> a shader to render the decal in a way it only influences the albedo, even
> if
> it is a simple replace, without using colorwrite masks (which I didn't want
> to use because they makes me have to switch states). What I'm trying to
> achieve (but may be impossible) is to have a "decal sheet", which has all
> the decals, so that with a single draw I can get all decals up... not sure
> if that's possible...
>
> Thanks all,
>
> Diogo
>
>
>
>
> ------------------------------------------------------------------------------
> This SF.Net email is sponsored by the Verizon Developer Community
> Take advantage of Verizon's best-in-class app development support
> A streamlined, 14 day to market process makes app distribution fast and
> easy
> Join now and get one step closer to millions of Verizon customers
> http://p.sf.net/sfu/verizon-dev2dev
> _______________________________________________
> GDAlgorithms-list mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list
> Archives:
> http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list
>
>
>
>
> --
> Jeff Russell
> Engineer, 8monkey Labs
> www.8monkeylabs.com
>
>
> ------------------------------------------------------------------------------
> This SF.Net email is sponsored by the Verizon Developer Community
> Take advantage of Verizon's best-in-class app development support
> A streamlined, 14 day to market process makes app distribution fast and
> easy
> Join now and get one step closer to millions of Verizon customers
> http://p.sf.net/sfu/verizon-dev2dev
> _______________________________________________
> GDAlgorithms-list mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list
> Archives:
> http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list
>



-- 
Jeff Russell
Engineer, 8monkey Labs
www.8monkeylabs.com

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev

_______________________________________________
GDAlgorithms-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list
Archives:
http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.