زد بافر

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

در گرافیک کامپیوتر، زد بافر الگوریتمی برای مدیریت عمق تصور در گرافیک سه بعدی است. این الگوریتم عموماً توسط سخت افزار پیاده سازی می شود و معمولاً فقط هنگام عدم وجود سخت افزار لازم یا هنگام انجام آزمایشات در حالت نرم‌افزاری اجرا می شود. این الگوریتم برای پیدا کردن جواب مساله پدیداری، که عبارت است از اینکه کدامیک از عناصر محیط روی تصویر دیده می شوند، طراحی شده است. این الگوریتم فقط برای اجسام کدر طراحی شده و در صورت وجود اجسام شفاف یا نیمه شفاف در محیط می توان از الگوریتم پینتر که البته کندتر است استفاده کرد. هنگامی که یک شیئ به وسیله کارت گرافیکی کشیده می شود، عمق هر پیکسل شیئ (مختصات z آن) در یک آرایه (معمولاً دو بعدی) ذخیره می شود. اگر یک پیکسل دیگر بخواهد در همان محل نمایش داده شود، باید به دوربین نزدیکتر باشد تا پیکسل های قبلی را بپوشاند، یا به عبارت دیگر در زد بافر عمق کمتری داشته باشد. به این کار حذف زد می گویند. زد بافر به جز در کشیدن تصاویر سه بعدی کاربردهای دیگری نیز به خصوص در تولید جلوه های ویژه ای چون عبور اجسام از دیوار ها (مانند ارواح)، قرار دادن انیمیشن ها روی یک صفحه خاص از فضا و الگوریتم های تولید سایه دارد.

الگوریتم[ویرایش]

مقادیر ورودی: لیستی از چند ضلعی ها برای کشیدن.

مقدار بازگشتی: یک آرایه رنگ، که شدت رنگ در آن نقطه را نشان می دهد.

     مقدار تمام عناصر (z-buffer(x,y را برابر حداکثر عمق قرار بده.
     مقدار تمام عناصر (Color(x,y را برابر رنگ پس زمینه قرار بده.
     برای هر چند ضلعی P انجام بده:
          برای هر پیکسل (x,y) که هنگام کشیدن P در صفحه خروجی قرار می گیرد انجام بده
          مقدار عمق این پیکسل را برای P محاسبه کن.
          اگر این عمق کمتر از عمق ذخیره شده در (zbuffer(x,y بود آنگاه:
               این مقدار را در (zbuffer(x,y جایگزین کن.
               مقدار (Color(x,y را بر اساس شدت رنگ P در نقطه (x,y) جایگزین کن.

منابع[ویرایش]