زد بافر

از ویکی‌پدیا، دانشنامهٔ آزاد

در گرافیک کامپیوتر، زد بافر الگوریتمی برای مدیریت عمق تصویر در گرافیک سه بعدی است. این الگوریتم عموماً توسط سخت افزار پیاده‌سازی می‌شود و معمولاً فقط هنگام عدم وجود سخت افزار لازم یا هنگام انجام آزمایش‌های در حالت نرم‌افزاری اجرا می‌شود. این الگوریتم برای پیدا کردن جواب مسئله پدیداری، که عبارت است از اینکه کدامیک از عناصر محیط روی تصویر دیده می‌شوند، طراحی شده‌است. این الگوریتم فقط برای اجسام کدر طراحی شده و در صورت وجود اجسام شفاف یا نیمه شفاف در محیط می‌توان از الگوریتم پینتر که البته کندتر است استفاده کرد. هنگامی که یک شیئ به وسیله کارت گرافیکی کشیده می‌شود، عمق هر پیکسل شیئ (مختصات 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) جایگزین کن.

زد بافر حتی با محاسبه مقیاس دقیق ، می تواند مشکلاتی داشته باشد ، این اشکالات بیشتر مربوط به دقت در فواصل است ، یعنی امکان این وجود دارد که زد بافر در فواصل دور و نزدیک به طور مساوی اعمال نشده باشد ، زد بافرینگ به طور کلی نتیجه مطلوبی به همراه دارد اما گاهی اوقات ممکن است تصویر کمی مصنوعی به نظر برسد ، همچنین نوع دقیق تری از این تکنیک وجود دارد که به آن w-buffering می گویند ، در این تکنیک ، بافر به طور دقیق تری بر روی تصویر و اشیاء اعمال می شود

توسعه[ویرایش]

اختراع زد بافرینگ را به ادوین کاتمول نسبت می دهند اگرچه ایدهٔ اولیه آن را ولفگانگ استربر در سال 1974 مطرح کرده بود

در سال های اخیر (1999_2005) توجه زیادی به بهینه سازی زد بافرینگ شده است که از جمله آنها می‌توان به توجه به میزان پهنای باند در دسترس و فشرده سازی به منظور کاهش تلفات محاسباتی اشاره کرد

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