Shader Laboratory
846 subscribers
265 photos
15 videos
59 files
404 links
Shader Laboratory
a channel about shaders in telegram

ID : @smkgames

MyStack : goo.gl/smMuqe 😎👌
Download Telegram
Forwarded from Kamali
Forwarded from Kamali
جلوگیری از افزایش میزان Alpha
Deleted Account
Photo
دوستان قبلاً یکی از دوستان سوال خوبی پرسیده بود
گفته بود Back to front ordering یعنی چی!
که براش جواب دقیقی پیدا کردم
این sorting ترنسپرنت هست
یعنی فرض کنید دو تا اسپرایت transparent دارید و یک اسپرایت معمولی،شما می تونید برای رندر شدنش ترتیب تعیین کنید
Shader Laboratory
http://www.ventuz.com/support/help/latest/RealtimeRendering.html
In the left configuration, the red glass doesn't look transparent at all. Why is that so? The render order of the objects is red then green then blue. When red is rendered, the Z-values in the depth buffer are set and no fragment from another triangle with a farther away Z-value will be rendered at all. So there is no chance to blend green and blue because their fragments are discarded before blending.

In the center configuration, depth testing has been artificially turned off. First red is rendered with nothing to blend it with since it is the first thing rendered. Then green is rendered and blended and blue is rendered and blended. Each time the new object will take 50% of itself and 50% from the already rendered objects, so at the time blue is rendered, only 25% of red will be left.

In the right configuration, depth testing has been re-enabled but the rendering order has been changed to back to front: First blue then green then red. When red is rendered, it takes 50% of itself and 50% of the already rendered objects which creates the correct effect.
Shader Laboratory
http://www.ventuz.com/support/help/latest/RealtimeRendering.html
در تنظیمات چپ، شیشه قرمز شفاف به نظر نمی رسد. چرا اینطور است؟ ترتیب رندر اشیاء قرمز سپس سبز و سپس آبی رنگ است. هنگامی که قرمز نمایش داده می شود، مقادیر Z در عمق بافر تنظیم می شوند و هیچ قطعه ای از مثلث دیگری با Z-value دورتر ارائه نمی شود. بنابراین هیچ فرصتی برای ترکیب سبز و آبی وجود ندارد، زیرا قطعات قبل از مخلوط کردن آنها از بین می روند.

در تنظیمات وسطی، آزمایش عمق بطور مصنوعی خاموش شده است. اول قرمز به تنهایی رندر شده تا با زمانی که اولین چیزی است که رندر شده ترکیب شود. سپس سبز و آبی رنگ رندر و ترکیب شده است. هر بار که جسم جدید 50٪ از خود و 50٪ از اشیاء که قبلا رندر شده است را بگیرد، بنابراین در این زمان آبی رنگ رندر می شود، فقط 25٪ قرمز باقی می ماند.

در تنظیمات سمت راست، تست عمق دوباره فعال شده است، اما ترتیب رندر به عقب به جلو تغییر یافته است: ابتدا آبی و سپس سبز و سپس قرمز. هنگامی که قرمز رندر می شود، 50٪ از خود و 50٪ از اشیاء که قبلا رندر شده است، اثر صحیح را ایجاد می کنند.
مقاله های Ben Golus رو از دست ندید (:
آبی = نرمال
قرمز = تانژانت
سبز = بای تانژانت ( بای نرمال)
ما اول کار نرمال و تانژانت رو داریم ولی bitangent (بهش binormal هم میگن ) رو نداریم به خاطر همین از Cross Product استفاده می کنیم تا بدستش بیاریم
#سوال
ماتریس TBN چیست؟
و چرا از آن باید استفاده کنیم
ما در برنامه نویسی گرافیک برای تبدیل فضا های مختلف از ضرب ماتریس ها برای تبدیل فضاها به فضاهای دیگر استفاده می کنیم
ماتریس TBN برای تبدیل world Space به Tangent Space استفاده میشه
نرمال مپ ها معمولا به دلایل مختلف در فضای تانژانت ذخیره می شوند (به دلیل دقت بهتر ،مپ ها می توانند بین چندین اشیاء به اشتراک گذاشته شوند، اشیا می توانند انیمیت شده باشند، و غیره). اگر می خواهید در فضای world space را نور پردازی کنید باید نرمال مپ در هر پیکسل(per-pixel) خود را با استفاده از ماتریس TBN به فضای جهان تبدیل کنید. بهینه سازی رایج این است که در عوض light خود را به فضای تانژانت در هر رأس تبدیل کرده و آن را در طول مثلث بچرخانید. خوبیه این روش اینه که دیگه ماتریس در هر پیکسل محاسبه نمیشه چون این روش خیلی کارو سنگین می کنه و در عوض محاسبات در هر ورتکس انجام میشه.

این بهینه سازی در سخت افزار قدیمی تر محبوب تر بود که در آن عملکرد و پیچیدگی های پیکسل شیدر به شدت کنترل می شد.در این روش چه یک منبع نور ، چه چند منبع نور در پاس رندرمون داشته باشیم ناچاریم هر منبع نور رو به world space تبدیل کنیم تا صرفه جویی در مصرف انرژی کنید. امروزه بیشتر احتمال دارد رندرهای منتخب را مشاهده کنید که تمام نرمال ها را به world space می کنند و آنها را به G-Buffer و یا forward / forward-plus renderers اضافه می کنند که چندین چراغ را در یک پاس رندر می کنند و به طور کلی بیشتر می شود کارآیی انجام محاسبات روشنایی در فضای جهانی.


https://stackoverflow.com/questions/40703272/is-tbn-matrix-really-rotation-matrix-in-nature
سلام دوستان به دلیل در خواست های زیادی که درباره ی نحوه ی تبدیل ShaderToy glsl به Unity CG/Hlsl داشتم یک آموزش در این باره ساختم

https://forum.unity.com/threads/converting-a-shadertoy-multipass-shader-to-unity-hlsl.418238/