OpenGL چیست ؟
OpenGL سرنامی برای Open Graphics Library به معنی کتابخانه گرافیک متنباز است. OpenGL استاندارد و کتابخانهای برای انجام کارهای گرافیک کامپیوتری به حساب میآید که در بسیاری از زبانها، محیطها و بسترها مورد استفاده قرار میگیرد. در دهه ۶۰ و اوایل دهه ۷۰ شمسی، نرمافزارها برای یک سختافزار گرافیکی خاص با رابطهای (Interface) متفاوتی ساخته میشدند. این مسئله به نوعی مشکلساز بود.
در آن زمان نیاز به یک استاندارد باز وجود داشت. شرکتی به نام SGI سیستم اختصاصی خود را به نام IrishGL معرفی کرده بود. در IrishGL هر چیزی که با گرافیک ارتباط نداشت (شامل ورودیهای ماوس و کیبورد) کنار گذاشته شد و این فناوری در دسترس همگان قرار داده شد. به این ترتیب OpenGL در سال ۱۳۷۰ متولد شد. موارد و نکات مهمی که پیرامون OpenGL و چیستی آن قابل بیان هستند
- OpenGL یک API سطح پایین برای رندرینگ گرافیکی دوبُعدی و سهبُعدی گرافیکهای برداری به حساب میآید.
- OpenGL با زبان C نوشته و خلق شده است. OpenGL در Fortran ،C++ ،C و جاوا وابستگی زبانی (Language Binding) دارد. به این معنی که کتابخانههای OpenGL در این زبانها قابل استفاده است.
- OpenGL با GPU (واحد پردازش گرافیکی | Graphical Processing Unit) برای دستیابی به رندرینگ شتابیافته سختافزاری (Hardware Accelerated Rendering) تعامل برقرار میکند.
- OpenGL استانداردی برای رندر کردن تصاویر و ارسال آن به صفحه نمایش از طریق کارت گرافیک است.
- OpenGL این امکان را به وجود میآورد که تصاویر گرافیکی از سیستم عامل و سیستم پنجرهای مستقل باشند.
- همانطور که بیان شد، یکی از کلیدیترین ویژگیها در OpenGL، شتابیافتگی سختافزاری است. در اینجا این سوال به وجود میآید که رندرینگ شتابیافته سختافزاری یا Hardware Accelerated Rendering چیست؟ به بیان ساده در پاسخ به این سوال میتوان گفت که OpenGL از کارت گرافیک کامپیوتر (GPU) برای سرعت بخشیدن به عملیات پردازشی استفاده میکند. در ادامه مطلب «WegbGL چیست» توضیحات بیشتری پیرامون مفهوم Hardware Accelerated Rendering ارائه شده است.
Hardware Accelerated Rendering
در این بخش از مطلب «WebGL چیست» به معرفی و شرح مفهوم رندرینگ شتابیافته سختافزاری پرداخته شده است. برای درک بهتر این مفهوم، ابتدا بهتر است تعریف ساده و مختصری از GPU ارائه شود. در ادامه مطلب «WebGL چیست» به این مهم پرداخته شده است.
GPU چیست ؟
به بیان ساده، GPU همان کارت گرافیک کامپیوتر است که در سطح پیشرفتهای مهندسی و بهینهسازی شده تا بتواند انجام محاسبات ماتریسهای بزرگ، پیکسلها، تصاویر و سایر موارد را بر عهده بگیرد. اکثر افراد با CPU (واحد پردازش مرکزی | Central Processing Unit) آشنایی کافی دارند. بنابراین، در ادامه پیش از تعریف رندرینگ شتابیافته سختافزاری در مطلب «WebGL چیست»، نیاز به ارائه مقایسهای از CPU و GPU وجود دارد.
مقایسه GPU با CPU
CPU و GPU در کامپیوترها وظایف پردازشی متفاوتی را برعهده دارند. CPU بسیار سریع است، اما تعداد هستههای (Core) پردازنده آن کم است. چرخههای ساعت در GPU نسبت به CPU کمی کندتر هستند، اما GPU تعداد هستههای بیشتری دارد. بنابراین، GPU میتواند دادهها را به صورت موازی دریافت و عملیات یکسانی را به صورت همزمان روی آنها اجرا کند. این ویژگی باعث میشود که GPU در برخی از کاربردهای خاص عملکرد بسیار مطلوبی را از خود نشان دهد
رندرینگ به چه معنا است؟
رندرینگ فرآیندی شامل تولید یک تصویر دوبعدی یا سهبعدی از یک مدل به وسیله فناوریهای رایج است. رندرینگ اغلب در طراحی معماری، ساخت انیمیشن، شبیهسازی، جلوههای ویژه تلویزیونی، بازیهای کامپیوتری و سایر موارد کاربرد دارد. روشها و امکانات به کار گرفته شده رندرینگ بر حسب پروژه متفاوت است. به این ترتیب، با شرح پیشنیازهای لازم، اکنون میتوان در ادامه مطلب «WebGL چیست» به ارائه تعریف «رندرینگ شتابیافته سختافزاری» پرداخت.
رندرینگ شتابیافته سختافزاری چیست؟
رندرینگ شتابیافته سختافزاری یا Hardware Accelerated Rendering را میتوان انجام عملیات رندرینگ به کمک فناوری شتاب سختافزاری تعریف کرد. این شتاب سختافزاری در رندرینگ تصاویر دو یا سهبُعدی از طریق GPU انجام میشود. هر تصویر از چندین پیکسل تشکیل شده است و هر پیکسل را میتوان درایه یک ماتریس در نظر گرفت که میزان روشنایی آن با یک عدد مشخص میشود.
بنابراین، GPU در یک رویکرد شتابیافته سختافزای، ابزار مناسبی برای انجام محاسبات (رندرینگ) روی تصاویر به حساب میآید. این مسئله بسیار جذاب به نظر میرسد، اما ارتباط آن با WebGL چیست ؟ در ادامه مطلب «WebGL چیست» به شرح مفهوم WebGL و ارتباط آن با GPU و Hardware Accelerated Rendering پرداخته شده است. پیش از آن، دوره آموزشی گرافیک کامپیوتری با OpenGL معرفی شده است
WebGL چیست ؟
«WebGL» اقتباسی از OpenGL محسوب میشود. در واقع، WebGL یک API گنجانده شده در جاوا اسکریپت و مشابه «OpenGL ES 2.0» (نسخه دوم OpenGL برای سیستمهای تعبیه شده) است. بنابراین، WebGL همان امکانات OpenGL را به همراه رندرینگ شتابیافته سختافزاری در مرورگر فراهم میسازد. عبارت WebGL از دو بخش Web و GL تشکیل شده است.
واضح است که «Web» به عبارت «World Wide Web» به معنی «تارنمای جهانگستر» یا «شبکه جهانی وب» اشاره دارد. «GL» سرنامی برای عبارت «Graphics Library» به معنی «کتابخانه گرافیک» است. GL ریشه در عبارت دیگری به نام OpenGL دارد که در بخش قبل معرفی شد. به بیان ساده، WebGL استانداردی برای اجرای وظایف OpenGL در مرورگر است. در ادامه مطلب «WebGl چیست»، تاریخچهای از WebGL ارائه شده است
تاریخچه WebGL
WebGL از تجربیات و آزمایشات Canvas سه بُعدی پدید آمد و آغازگر آن ولادمیر وُکیچیویچ (Vladimir Vukićević) از شرکت موزیلا است. وُکیچیویچ ابتدا یک نمونه اولیه Canvas سهبُعدی را در سال ۱۳۸۵ به نمایش گذاشت. تا اواخر سال ۱۳۸۶ هم موزیلا و هم اوپِرا، پیادهسازی جداگانه مربوط به خودشان را از Canvas سهبُعدی ساخته بودند
در اواسط سال ۱۳۸۷، کنسرسیوم غیرانتفاعی به نام «گروه کرونوس» (Khronos Group)، «کارگروه WebGL» را راهاندازی کردند. قواعد و مشخصههای نسخه شماره یک (1.0) WebGL با مشارکت اولیه اپل، گوگل، موزیلا، اوپرا و سایرین در ابتدای سال ۱۳۹۰ منتشر شد. از اوایل سال ۱۳۹۱، کِن راسل (Ken Russel) ریاست کارگروه WebGL را برعهده دارد.
از جمله کاربردهای ابتدایی WebGL میتوان به ZygoteBody اشاره کرد که یک وب اپلیکیشن برای رندر سهبُعدی مدلهای آناتومی بدن انسان و حیوانات به شمار میرود. در اواسط سال ۱۳۹۱ شرکت Autodesk اعلام کرد که آنها بیشتر اپلیکیشنهای خود را به فضای ابری منتقل کردهاند که قابل اجرا روی کلاینتهای محلی WebGL است.
این برنامهها شامل Fusion 360 و AutoCAD 360 میشود. توسعه مشخصههای نسخه دوم WebGL در سال ۱۳۹۲ آغاز و انتشار نهایی آن در اواخر سال ۱۳۹۵ انجام شد. این نسخه، مبتنی بر OpenGL ES 3.0 است. اولین پیادهسازیهای آن در فایرفاکس ۵۱، کروم ۵۶ و اوپرا ۴۳ اتفاق افتاد. به این ترتیب تاریخچه کلی از فناوری WebGL ارائه شد. در ادامه مطلب «WebGL چیست» شرح مختصری از کاربردهای WebGL ارائه شده است.
چطور میتوان WebGL را اجرا کرد ؟
برای دسترسی به محتوای تولید شده با WebGL نیاز به مرورگری وجود دارد که از WebGL پشتیبانی کند. WebGL به میزان گستردهای به وسیله مرورگرهای امروزی پشتیبانی میشود. اگرچه، در دسترس بودن آن به موارد دیگری از جمله پشتیبانی GPU نیز بستگی دارد. وبسایت رسمی WebGL یک صفحه آزمایش رسمی برای این منظور فراهم کرده است. در ادامه مطلب «WebGL چیست» به ارائه فهرستی از مرورگرهایی پرداخته شده است که میتوانند کدهای مربوط به WebGL را رندر کنند و تصاویر ساخته شده با آن را نمایش دهند.
مرورگرهای پشتیبانی کننده از WebGL
در این بخش از مطلب «WebGL چیست»، فهرستی از مرورگرهایی آمده است که از اجرای WebGL پشتیبانی میکنند. ابتدا، فهرستی از مرورگرهای دسکتاپ و اطلاعاتی پیرامون نحوه پشتیبانی آنها از WebGL ارائه و پس از آن، همین کار برای مرورگرهای موبایل انجام شده است.
مرورگرهای دسکتاپ
گوگل کروم: WebGL 1.0 از اواخر سال ۱۳۸۹ در تمام پلتفرمهایی فعال شده است که دارای کارت گرافیک قادر به رندر کردن WebGL باشند. در ویندوز، کروم به صورت پیشفرض از رندر کننده ANGLE (موتور لایه گرافیکی شبه محلی) برای ترجمه «OpenGL ES» به «Direct X 9.0c» استفاده میکند. اگرچه، در لینوکس و Mac OS X رندر کننده پیشفرض OpenGL است. همچنین، در ویندوز این امکان وجود دارد که به اجبار OpenGL را به عنوان رندر کننده تعیین کرد. از اواسط سال ۱۳۹۲ کروم رندر کننده جدیدتر Direct3D 11 را به کار میبرد که در هر صورت نیازمند یک کارت گرافیک جدیدتر است. از نسخه ۵۶ به بعد، کروم از WebGL 2.0 پشتیبانی میکند.
موزیلا فایرفاکس: WebGL 1.0 از نسخه 4.0 موزیلا در تمامی پلتفرمهایی فعال است که دارای کارت گرافیک لازم به همراه درایورهای بهروز شده باشد. از سال ۱۳۹۲ فایرفاکس در پلتفرم ویندوز به وسیله ANGLE از DirectX هم پشتیبانی میکند. همچنین، فایرفاکس از نسخه ۵۱ به بعد از WebGL 2.0 پشتیبانی میکند.
سافاری: Safari 0.6 و نسخههای جدیدتری که در سیستم عامل Mac OS X Lion ،OS X Mountain Lion و سافاری نسخه ۵.۱ در Mac OS X Snow Leopard پشتیبانی برای WebGL 1.0 را پیادهسازی کردهاند. این پشتیبانی قبل از سافاری ۸ غیرفعال شده بود. در حال حاضر، سافاری نسخه ۱۲ که در سیستم عامل MacOS Mojave به صورت پیشفرض نصب شده، پشتیبانی برای WebGL 2.0 را به عنوان یک قابلیت آزمایشی در دسترس قرار داده است.
اوپرا: WebGL 1.0 در اوپرا ۱۱ و ۱۲ پیادهسازی شده است، اگر چه در سال ۱۳۹۳ به صورت پیشفرض غیرفعال بود. نسخه ۴۳ به بعد اوپرا از WebGL 2.0 پشتیبانی میکند.
اینترنت اکسپلورر: WebGL 1.0 تا حدودی در اینترنت اکسپلورر ۱۱ پشتیبانی میشود. در ابتدا، IE در اکثر تستهای انطباق رسمی WebGL شکست خورد، اما بعدتر مایکروسافت بهروزرسانیهای بسیاری را منتشر کرد. نسخه 0.94 موتور WebGL تقریباً تا ۹۷ درصد از آزمایشهای کرونوس را با موفقیت پشت سر گذاشته است. همچنین، امکان اضافه کردن پشتیبانی WebGL به نسخههای قدیمیتر اینترنت اکسپلورر به صورت دستی با استفاده از افزونههای شخص ثالث نظیر EWebGL وجود دارد.
مایکروسافت اج: نسخه پایدار اولیه اج از WebGL نسخه 0.9۵ (نام زمینه: “experimental-webgl”) با زبان GLSL متنباز و کامپایلر مبدأ به مبدأ HLSL پشتیبانی میکند.
نظرات شما عزیزان: