فرمولهای راینهارد و ACES: مپینگ رنگ چگونه رندر ۳۲ بیتی را در نمایشگر ۱۰ بیتی جا میدهد؟
موتورهای بازیسازی مدرن، نور را با مقادیر بینهایتِ ۳۲ بیتی پردازش میکنند، اما توان نمایشگرها روی اعداد صحیح ۱۰ بیتی قفل شده است. دو فرمول ریاضی رقیب — راینهارد و ACES — دقیقا تعیین میکنند که این روشنایی خیرهکننده چگونه فشرده شود تا روی صفحه نمایش شما جا بگیرد؛ رقابتی نفسگیر که شما را مجبور به انتخاب بین سرعت اجرای بازی و واقعگرایی سینمایی میکند.
به قلم کامران احمدی
این خبر را به اشتراک بگذارید
- مدافعان واقعگرایی سینمایی
- استاندارد ACES را به دلیل توانایی آن در حفظ رنگ و کنتراست در نقاط بسیار روشن و تقلید از فیلم فیزیکی در اولویت قرار میدهند.
- بهینهسازان عملکرد
- طرفداران الگوریتمهای سبکی مانند راینهارد که چرخههای حیاتی پردازنده گرافیکی را در سختافزارهای محدود نجات میدهند.
دیدگاههایی که این گزارش پوشش نداده
- توسعهدهندگان مستقلی که برای رسیدن به سبک هنری خاص خود، به مپرهای رنگی سفارشی و غیراستاندارد تکیه میکنند.
- مهندسان سختافزار نمایشگر که در حال ساخت پنلهای ۱۲ بیتی هستند تا نیاز به فشردهسازی شدید رنگها را کاهش دهند.
چرا مهم است
هر بار که یک گیمر به خورشیدی دیجیتال، یک انفجار مهیب یا تابلویی نئونی خیره میشود، این الگوریتمِ مپینگ رنگ (Tone Mapping) است که تصمیم میگیرد چه رنگهایی از این ترجمه جان سالم به در ببرند و روی مانیتور نقش ببندند. درک ریاضیاتِ پشت این منحنیها به ما نشان میدهد که چرا بازیهای قدیمی رنگورورفته به نظر میرسند و عناوین مدرن چگونه به آن جلوه سینمایی و خیرهکننده دست مییابند.
درست در همان هزارم ثانیهای که واحد پردازش گرافیکی (GPU) کار روی یک فریم را تمام میکند، ریاضیاتِ درونِ رندر با مانیتوری که روی میز شماست، وارد یک تضاد خشن و ناسازگار میشود. موتور بازیسازی صحنه را با دقت اعشاری ۳۲ بیتی محاسبه کرده است؛ این یعنی روشنایی یک خورشید دیجیتال ممکن است روی عدد ۱۲۰۰۰۰.۰ ثبت شده باشد. اما سختافزار نمایشگر — حتی یک پنل ردهبالای HDR — تنها میتواند یک سیگنال عدد صحیح ۱۰ بیتی را بپذیرد که نهایتا روی ۱۰۲۴ پله مجزا برای هر کانال رنگی قفل میشود. اگر موتور بازیسازی آن دادههای ۳۲ بیتی را مستقیما به صفحه نمایش بفرستد، هر مقداری بالاتر از ۱.۰ فورا به یک سفیدی مطلق و تخت تبدیل شده و تمام جزئیات در نقاط روشن تصویر نابود میشود.[4]
راه حل این گلوگاه سختافزاری، یک منحنی فشردهسازی ریاضی است که به عنوان مپینگ رنگ (Tone Mapping) شناخته میشود. همانطور که در مستندات LearnOpenGL آمده است: «دامنه دینامیک بالا (HDR) به ما اجازه میدهد مقادیر رنگی را خارج از محدوده پیشفرض ۰.۰ تا ۱.۰ تعیین کنیم»، اما این مقادیر در نهایت باید پیش از آنکه گیمر بتواند آنها را ببیند، دوباره در یک فضای محدود بازنویسی شوند. در دو دهه گذشته، صنعت بازی برای انجام این فشردهسازی به دو الگوریتم اصلی تکیه کرده است: عملگر راینهارد (Reinhard) و منحنی سینمایی سیستم رمزگذاری رنگ آکادمی (ACES). هر کدام از اینها نشاندهنده یک فلسفه کاملا متفاوت در نحوه قربانی کردن دادهها هنگام فشردهسازیِ بینهایت در یک جعبه ۱۰ بیتی است.[4][8]
عملگر راینهارد که در مقاله تاریخساز اریک راینهارد در سال ۲۰۰۲ معرفی شد، تعریف دقیق ظرافت ریاضی است. فرمول اصلی آن به شکل حیرتانگیزی ساده است: رنگ خروجی برابر است با رنگ ورودی تقسیم بر یک به علاوه رنگ ورودی. اگر پیکسلی روشنایی ۰.۵ داشته باشد، تبدیل به ۰.۳۳ میشود. اگر روشنایی آن ۱۰.۰ باشد، به ۰.۹۰ میرسد. اگر به ۱۰۰۰۰۰.۰ برسد، تبدیل به ۰.۹۹۹۹۹ میشود. این منحنی به صورت مجانبی به ۱.۰ نزدیک میشود اما هرگز کاملا آن را لمس نمیکند؛ این یعنی تضمین میکند که مهم نیست یک منبع نور در رندر ۳۲ بیتی چقدر روشن شود، از نظر ریاضی هرگز در خروجی ۱۰ بیتی به سفیدی مطلق و زننده (Clipping) نمیرسد.[1]
اما این سادگی، هزینه بصری سنگینی به همراه دارد. از آنجا که راینهارد با تمام کانالهای رنگی یکسان برخورد کرده و آنها را به طور یکنواخت فشرده میکند، نقاط بسیار روشن اشباع رنگ خود را از دست میدهند. یک آتش دیجیتال خروشان که باید در لبهها نارنجی پررنگ و در مرکز زرد داغ به نظر برسد، در عوض رنگ میبازد و به یک سفیدی یکدست و بیروح تبدیل میشود. کنتراست در محدودههای بالا در هم میشکند و به بازیهایی که به شدت به راینهارد متکی هستند، یک زیباییشناسی تخت و کمی خاکستری میدهد؛ همان چیزی که نسل اولیه رندرهای مبتنی بر فیزیک در ایکسباکس ۳۶۰ و پلیاستیشن ۳ را تعریف میکرد.[1][6]
جایگزین مدرن این روش نه در صنعت بازی، بلکه در هالیوود متولد شد. سیستم رمزگذاری رنگ آکادمی (ACES) توسط آکادمی علوم و هنرهای سینما توسعه یافت تا خطوط لوله رنگ را در دوربینهای مختلف و استودیوهای جلوههای ویژه استاندارد کند. همانطور که کریس برژون، دانشمند رنگ، توضیح میدهد: «ACES یک سیستم مدیریت رنگ و تبادل تصویر رایگان، باز و مستقل از دستگاه است.» وقتی توسعهدهندگان بازی متوجه شدند که میخواهند رندرهای بیدرنگشان شبیه به فیلمهای پرفروش هالیوودی به نظر برسد، شروع به تطبیق منحنیهای مپینگ رنگ ACES برای شیدرهای کارت گرافیک کردند.[2][5]
جایگزین مدرن این روش نه در صنعت بازی، بلکه در هالیوود متولد شد.
منحنی ACES به مراتب پیچیدهتر از راینهارد است. این روش به جای یک تقسیم ساده، از یک تابع چندجملهای چندمرحلهای استفاده میکند. در سال ۲۰۱۶، کریستوف نارکوویچ، برنامهنویس گرافیک، یک تقریب بسیار بهینهشده از منحنی سینمایی ACES را به طور خاص برای موتورهای بازیسازی منتشر کرد و ریاضیات سنگین هالیوود را به یک عملیات سریع در شیدر کاهش داد. فرمول نارکوویچ یک «پنجه» متمایز (برای تاریکتر کردن سایههای عمیق و خلق رنگ مشکی غنیتر)، یک بخش میانی خطی با شیب تند (برای حفظ کنتراست بالا) و یک «شانه» طولانی و غلتان برای نقاط روشن معرفی میکند.[3]
تفاوت بصری در همان «شانه» است که گرافیک بازیهای مدرن را تعریف میکند. وقتی یک منحنی ACES مقدار ۳۲ بیتی ۱۰.۰ را فشرده میکند، فقط روشنایی را پایین نمیآورد؛ بلکه نسبت بین کانالهای قرمز، سبز و آبی را تا درجات بسیار بالاتری از مقیاس روشنایی حفظ میکند. حالا همان آتش دیجیتال، رنگهای زرد و نارنجی غنی خود را درست تا بالاترین نقطه شعله حفظ میکند و دقیقا واکنشی شبیه به نگاتیو فیلم فیزیکی در برابر نوردهی بیش از حد نشان میدهد. نتیجه کار، تصویری کوبنده، با کنتراست بالا و کاملا سینمایی است.[3][7]
با این حال، رویکرد ACES بهای محاسباتی سنگینتری میطلبد. در حالی که راینهارد تنها به یک جمع و تقسیم به ازای هر پیکسل نیاز دارد، تقریب ACES نارکوویچ نیازمند چندین عملیات ضرب و جمع است. در یک نمایشگر 4K که ۸.۲ میلیون پیکسل را با سرعت ۶۰ فریم بر ثانیه رندر میکند، این دستورالعملهای حسابی اضافی روی هم تلنبار میشوند. علاوه بر این، ACES بسیار سرسخت است؛ این الگوریتم رنگهای میانی و سایهها را به شدت تاریک میکند و نورپردازان را مجبور میسازد تا نور مصنوعی بسیار بیشتری را به صحنههای خود تزریق کنند تا فقط دید در مناطق تاریکتر حفظ شود.[3][8]
صنعت بازی تا حد زیادی این معامله را پذیرفته است. موتورهای تجاری بزرگ، از جمله آنریل انجین (Unreal Engine)، اکنون به طور پیشفرض از خطوط لوله مپینگ رنگ سینمایی مبتنی بر ACES استفاده میکنند. تقاضا برای واقعگرایی نوری (Photorealism) از نیاز به صرفهجویی در کسری از میلیثانیه برای دستورالعملهای پردازشی پیشی گرفته است. با این وجود، انتخاب بین این دو الگوریتم همچنان یک تصمیم معماری بنیادین برای ساخت هر موتور سفارشی است و کل خط لوله نورپردازی را از اولین دارایی قرار داده شده در بازی تا آخرین پیکسل رندر شده، دیکته میکند.[5][8]
عملگر راینهارد زمانی به خوبی جواب میدهد که بازی، سختافزار موبایل با محدودیتهای شدید پردازشی را هدف قرار دهد، یا زمانی که کارگردانی هنری نیازمند یک زیباییشناسی رنگورورفته و با کنتراست پایین باشد. این روش همچنین در رندرهای علمی یا تجسم دادهها که در آنها حفظ درخشندگی نسبی رنگهای میانی مهمتر از زرقوبرق سینمایی است، عالی عمل میکند. اما وقتی صحبت از رندر محیطهای واقعگرایانه با اختلاف نور شدید باشد، راینهارد اصلا مناسب نیست، چرا که نقاط روشن ناگزیر رنگ باخته و به سفیدی تخت تبدیل میشوند.[1][4]
در نقطه مقابل، فرمول ACES زمانی میدرخشد که یک عنوان به رندر مبتنی بر فیزیک تکیه دارد و نیازمند جلوههای بصری سینمایی و با کنتراست بالا است؛ جایی که آتش، نئون و نور خورشید باید رنگ خود را در اوج روشنایی حفظ کنند. این انتخاب قطعی برای تطبیق با فیلمبرداریهای لایواکشن یا دستیابی به یک زیباییشناسی در حد فیلمهای بلاکباستر است. اما زمانی که چرخههای پردازنده گرافیکی (GPU) به شدت در تنگنا هستند، یا زمانی که یک بازی استایلایز شده و غیرواقعگرایانه به کنترل مطلق روی مقادیر رنگی خاص بدون دخالت یک منحنی سینمایی نیاز دارد، ACES انتخاب مناسبی نخواهد بود.[3][5]
همانطور که سختافزار نمایشگرها از رنگ ۱۰ بیتی عبور کرده و به قلمرو ۱۲ بیتی دالبی ویژن وارد میشوند، فاصله بین هدف رندر ۳۲ بیتی و صفحه نمایش فیزیکی به آرامی در حال کاهش است. اما تا زمانی که مانیتورها نتوانند نور بینهایت را ساطع کنند، ریاضیاتِ فشردهسازی همچنان یک اجبار است. چه یک توسعهدهنده سادگی ظریف راینهارد را انتخاب کند و چه به سراغ ضربه سنگین و سینمایی ACES برود، آن معادله نهایی همان لنزی است که هر گیمر از طریق آن بازی را تجربه میکند.[4][8]
نکات کلیدی
- موتورهای بازیسازی نور را در قالب اعداد اعشاری ۳۲ بیتی محاسبه میکنند و روشناییهایی میسازند که بسیار فراتر از توان نمایشگرهای ۱۰ بیتی است.
- الگوریتمهای مپینگ رنگ، این دامنه بینهایت را در یک مقیاس محدود بین ۰.۰ تا ۱.۰ فشرده میکنند تا تصویر به سفیدی مطلق و زننده تبدیل نشود.
- عملگر راینهارد (Reinhard) از یک فرمول تقسیم ساده استفاده میکند که بار پردازشی کمی دارد، اما رنگِ نقاط بسیار روشن را از بین میبرد.
- منحنی سینمایی ACES که از استانداردهای هالیوود وام گرفته شده، با استفاده از چندجملهایهای پیچیده، رنگهای غنی و کنتراست را در اوج روشنایی حفظ میکند.
- استاندارد ACES حالا به پیشفرض موتورهای مدرنی مثل آنریل (Unreal) تبدیل شده و در ازای افت ناچیز عملکرد، گرافیک سینمایی و واقعگرایانهای ارائه میدهد.
بررسی عمیق دیدگاهها
رویکرد راینهارد
سادگی ریاضی و عملکرد مطلق را بر حفظ رنگهای سینمایی ترجیح میدهد.
دفاع از راینهارد کاملا بر پایه ظرافت و بار محاسباتی پایین آن استوار است. با استفاده از یک عملیات تقسیم ساده — $C_{out} = C_{in} / (1 + C_{in})$ — این الگوریتم تضمین میکند که هیچ پیکسلی از نظر ریاضی هرگز از مقدار ۱.۰ تجاوز نخواهد کرد، فارغ از اینکه هدف رندر ۳۲ بیتی چقدر روشن شود. این ویژگی آن را به شدت پایدار کرده و اجرای آن روی پردازنده گرافیکی تقریبا هیچ هزینهای ندارد. با این حال، شواهد علیه آن کاملا بصری است: از آنجا که تمام کانالهای رنگی را به طور یکنواخت فشرده میکند، ناگزیر رنگهای روشن را به سمت سفیدی میکشد. یک پرتو لیزر قرمز با روشنایی ۱۰۰ برابر، ابتدا صورتی و سپس سفید میشود و هویت اصلی خود را از دست میدهد. این روش برای بازیهای موبایل یا عناوین استایلایز شده که در آنها دستورالعملهای پردازشی به شدت بودجهبندی شدهاند، کاملا مناسب است، اما در محیطهای واقعگرایانه که آتش و نئون باید معتبر به نظر برسند، شکست میخورد.
استاندارد ACES
چرخههای پردازنده گرافیکی را فدا میکند تا کنتراست و یکپارچگی رنگ را در نقاط روشن، شبیه به فیلم فیزیکی حفظ کند.
منحنی سینمایی ACES استدلال میکند که کیفیت تصویر نهایی ارزش هزینه کردن برای ریاضیات سنگینتر را دارد. ACES با استفاده از یک منحنی چندجملهای با یک «پنجه» و «شانه» متمایز، نحوه واکنش سلولوئید فیلم فیزیکی به نور را تقلید میکند. دلیل برتری آن در مدیریت نقاط روشن نهفته است: این الگوریتم نسبت بین کانالهای RGB را در درجات بسیار بالاتری از مقیاس روشنایی حفظ میکند، به این معنی که یک انفجار درخشان به جای اینکه به سفیدی بزند، نارنجی و زرد باقی میماند. بهای این کار، افت عملکرد است — تقریب کریستوف نارکوویچ نیازمند چندین دستورالعمل ضرب و جمع به ازای هر پیکسل است — و همچنین تمایل به تاریک کردن سایههای عمیق که نورپردازان را مجبور به جبران آن میکند. این انتخاب قطعی برای توسعه بازیهای مدرن AAA است و در هر خط لولهای که برای رسیدن به واقعگرایی سینمایی تلاش میکند، به بهترین شکل جا میگیرد.
منابع
[1]ACM Transactions on Graphicsبهینهسازان عملکردPhotographic tone reproduction for digital images
مطالعه در ACM Transactions on Graphics →
[2]ACESCentralمدافعان واقعگرایی سینماییSpecification S-2018-001 Academy Color Encoding System
مطالعه در ACESCentral →
[3]Krzysztof Narkowiczمدافعان واقعگرایی سینماییACES Filmic Tone Mapping Curve
مطالعه در Krzysztof Narkowicz →
[4]LearnOpenGLبهینهسازان عملکردHDR - LearnOpenGL
مطالعه در LearnOpenGL →
[5]Chris Brejonمدافعان واقعگرایی سینماییChapter 1.5: Academy Color Encoding System (ACES)
مطالعه در Chris Brejon →
[6]MDPIمدافعان واقعگرایی سینماییSingle-Image High Dynamic Range Reconstruction via Improved HDRUNet with Attention and Multi-Component Loss
مطالعه در MDPI →
[7]Mixing Lightمدافعان واقعگرایی سینماییGetting To Know ACES Part 1: Introduction
مطالعه در Mixing Light →
[8]تیم سردبیری کوهستانتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
نظرات
بیشتر در بازی و ورزشهای الکترونیک
مشاهده همه →مکانیک درآمدزایی
مکانیک درآمدزایی بازیهای موبایلی: محاسبه دقیق نرخ تبدیل و ارزش طول عمر کاربر
11 منبع
بالانس بازی
ریاضیات متا: کالبدشکافی مقیاسپذیری افزایشی، ضربی و نماییِ دمیج در بالانس بازیها
7 منبع
راکت لیگ
آغاز مسابقات قهرمانی جهان راکت لیگ در تگزاس با جایزه ۱.۲ میلیون دلاری
6 منبع
فناوری پردازنده
اینتل و انویدیا توسعه پردازندههای x86 با گرافیک یکپارچه RTX را تسریع میکنند
7 منبع
هر زاویه. هر روز.
دریافت بازی و ورزشهای الکترونیک اخبار همراه با پوشش کامل منابع و تحلیل دیدگاهها، مستقیم در صندوق ورودی شما.





