lord_akinak متخصص ساخت بازی
تاريخ عضويت: شنبه 15 ارديبهشت 1386 تعداد ارسالها: 349 محل سكونت: Hell
3 شنبه 1 بهمن 1387 - 22:59 |
|
|
سلام
downsample:
یه تکسچر به اندازه 1/4 صحنه بساز به عنوان RenderTarget /
یه fullscreen quad رندر کن.
تکسچری ( RenderTarget قبلی که صحنه توش رندر شده ) رو براش بفرست.
VertexProgram :: فقط texcoord های quad رو برای fragment shader لازم داریم.
FragmentProgram ::
كد: |
float2 PixelCoordsDownFilter[16] =
{
{ 1.5, -1.5 },
{ 1.5, -0.5 },
{ 1.5, 0.5 },
{ 1.5, 1.5 },
{ 0.5, -1.5 },
{ 0.5, -0.5 },
{ 0.5, 0.5 },
{ 0.5, 1.5 },
{-0.5, -1.5 },
{-0.5, -0.5 },
{-0.5, 0.5 },
{-0.5, 1.5 },
{-1.5, -1.5 },
{-1.5, -0.5 },
{-1.5, 0.5 },
{-1.5, 1.5 },
};
float4 DownFilter( in float2 Tex : TEXCOORD0 ) : COLOR0
{
float4 Color = 0;
for (int i = 0; i < 16; i++)
{
Color += tex2D( g_samSrcColor, Tex + TexelCoordsDownFilter[i].xy );
}
return Color / 16;
}
|
از DirectXSDK -> PostProcesses Sample
این HLSL هست که بی شک خودت استادی و به GLSL تبدیل میکنی / 16 تکسل اطراف هر پیکسل رو ترکیب می کنه/ نتیجه یه تکسچر با اندازه 1/4 تکسچر اول که رنگها توش ترکیب شدن ( در واقع این downsample هم یه جورایی داره blur میکنه واست )
برای گرفتن نتیجه نهایی 2 راه وجود داره :
1
- همین تکسچر downsample رو بعد از blur کردن بزرگ کنی ( 4 برابر ) -> بلور خیــــــلــــی زیاد میشه!
برای بزگ کردن : کافیه توی یه پس دیگه دقیقا همون روند رو با همون fragmentprogram انجام بدی ، این دفعه روی یه rendertarget با اندازه برابر backbuffer یا کلا روی خود backbuffer ...
2 - blend کردن این تکسچر با تکسچر اصلی ( چیزی که توی Bloom انجام میشه ) ، blend کردن رو هم توی یه پس دیگه انجام بده ، هر جور که دوست داری 2 تا رنگ های تکسچرت رو میتونی جمع بزنی ، مثلا توی Bloom خودم ، همین جوری 2 تا texture lookup دارم بعدشم فرتی جمع میزنم ( یه ضریب برای تکسل downsample شده بزاری که میزان تاثیرش رو کنترل کنه بد نیست.. )
كد: |
sampler2D Tex_Scene: register(s0);
sampler2D Tex_Blur: register(s1);
float4 bloom_blur_blend( tqFragmentData i ): COLOR
{
float3 src = tex2D( Tex_Scene , i.uv );
float3 blr = tex2D( Tex_Blur , i.uv );
return float4( (blr*0.8+src) ,1);
}
|
|
_________________ And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now |
|