Re: [Algorithms] Decals and deferred rendering
Brought to you by:
vexxed72
|
From: Jeff R. <je...@8m...> - 2010-01-13 18:21:37
|
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 <sm...@go...> 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:dio...@ne...]
> *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:je...@8m...]
> *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 <
> dio...@ne...> 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
> GDA...@li...
> 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
> GDA...@li...
> 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
|