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 |