WebGL به زبان ساده، تکنولوژی برای کشیدن، به نمایش در آرودن و تعامل سطح بالا و پیشرفته با گرافیک سهبعدی کامپیوتری از طریق مرورگرهای وب است. پیش از این، گرافیک سهبعدی تنها محدود به کامپیوترهای سطح بالا و قوی یا کنسولهای بازی بود و نیاز به برنامهنویسی پیچیدهای داشت. اما امروزه با پیشرفتهتر شدن کامپیوترهای شخصی و web browser ها، نمایش گرافیک سهبعدی از طریق تکنولوژیهای مدرن و شناختهشدهی وب، امکانپذیر شده است.
WebGL هنگامی که با HTML5 و javaScript ترکیب میشود، گرافیک سهبعدی را از طریق web browser به کاربر نمایش میدهد. این تکنولوژی بدون شک نقش بسیار مهمی را user interface های نسل بعدی وب بازی خواهد کرد و طی سالهای آینده میتوان انتظار داشت که بیشتر از این تکنولوژی در وسایل الکترونیکی از جمله تلفنهای هوشمند، تبلتها و کامپیوترها (و در کل وسایلی که از web browser استفاده میکنند) به منظور بهکار بردن گرافیک سهبعدی و بازیسازی استفاده شود.
اگر مرورگرهای شما مثل google chrome یا Firefox پیشرفته است، میتوانید چند نمونه از گرافیک سهبعدی ساخته شده توسط WebGL را در زیر مشاهده کنید:
برای مشاهده اینجا کلیک کنید
برای مشاهده اینجا کلیک کنید
برای مشاهده اینجا کلیک کنید
برای مشاهده اینجا کلیک کنید
HTML5 که آخرین نسخه از HTML است، با ویژگیهایی مثل ۲D graphics، networking و local storage access موجب گسترش و پیشرفتهتر شدن HTML سنتی شده و با ظهور HTML5 مرورگرها بهسرعت در حال تحول هستند و دیگر بهجای اینکه تنها یک صفحهی سادهی نمایش اطلاعات باشند، به پلتفرمهای پیشرفتهای تبدیل شدهاند. این تکامل به interface و قابلیتهای گرافیکی فراتر از دو بعد نیازمند است و WebGL نیز برای همین منظور طراحی شده تا ساخت application های سهبعدی تحت وب را فراهم کند.
بهدلیل اینکه WebGL بهصورت پیشفرض یک تکنولوژی built-in در مرورگرهای مدرن است، شما میتوانید مستقیماً و بدون نیاز به هیچ plugin یا library از WebGL استفاده کنید و نتایج آن را در مرورگر خود ببینید. جالبترین نکتهی WebGL اینجاست که این تکنولوژی، تحت وب است و بر روی مرورگر اجرا میشود. این بدان معناست که تنها به یک چیز برای اجرای برنامههای WebGL نیاز دارید و آن نیز یک مرورگر است. دیگر مهم نیست که این مرورگر روی تبلت، تلفن هوشمند، کامپیوتر شخصی یا کنسول بازی شما باشد. از طرف دیگر شما به هیچگونه کامپایلری برای تولید گرافیک سهبعدی نیاز ندارید و تنها ابزار شما برای کدنویسی WebGL میتواند یک text editor ساده مثل notepad باشد. پیش از این، گرافیکهای سهبعدی از طریق زبانهای برنامهنویسی مثل C یا ++C نوشته شده و سپس به باینریهای قابل اجرا مخصوص یک پلتفرم، کامپایل میشدند. یعنی نسخهی Macintosh یک برنامه سهبعدی بر روی Windows یا Linux قابل اجرا نبود. بهعلاوه اینکه، کاربرها علاوهبر نصب خود برنامه، نیاز داشتند که library های استفاده شده در برنامه را نصب کنند تا برنامه در نهایت اجرا شود. اینکار باعث میشود تا بهسختی بتوانید برنامهها و بازیهای خود را با دیگران به اشتراک بگذارید. اما اکنون بهدلیل اینکه WebGL تشکیل شده از فایلهای HTML و javaScript است، شما به راحتی میتوانید برنامههای خود را با دیگران به اشتراک بگذارید و برای اینکار تنها کافی است فایلهای برنامه را به روی یک host و domain آپلود کنید و فقط آدرس را به دیگران بدهید تا بازی یا برنامه شما را ببینند. برای مثال، میتوانید از این آدرس چند برنامه WebGL که توسط گوگل انتشار یافته است را مشاهده کنید.
مشخصات WebGL بر اساس OpenGL است که سالهاست بهطور گسترده در گرافیک، بازیهای کامپیوتری و CAD applications استفاده میشود. در یک جمله میتوان گفت که ” WebGL همان OpenGL تحت وب است” و از آنجا که OpenGL حدود بیست سال در تولید برنامههای مختلف استفاده شده، میتوانید منابع و کتابهای بسیاری را در این مورد پیدا کنید که به درک بهتر WebGL کمک میکند.
دو مورد از پر استفادهترین تکنولوژیهای نمایش گرافیک سهبعدی در کامپیوترهای شخصی، OpenGL و Direct3D هستند. Direct3D که بخشی از تکنولوژی DirectX مایکروسافت است، عمدتاً در پلتفرم ویندوز استفاده میشود و یک API اختصاصیست که تحت کنترل مایکروسافت است. از طرف دیگر، OpenGL به دلیل داشتن ماهیت royalty-free در پلتفرمهای مختلفی مثل Windows، Macintosh، Linux و device های مختلفی چون smart phones و tablet و کنسولهای بازی، مورد استفاده قرار میگیرد.
OpenGL در ابتدا توسط Silicon Graphics توسعه یافت و در سال ۱۹۹۲ بهصورت open standard منتشر شد. OpenGL تاکنون پیوسته در حال تکامل و پیشرفت بوده و حتی در تولید فیلم نیز از آن استفاده شده است. اکنون آخرین نسخه از OpenGL نسخهی ۴٫۳ برای desktop PC است. WebGL در واقعه از نسخهی OpenGL ES 2.0 که برای embedded computers بهینهسازی شده بود، مشتق شده است.
تصویر زیر ارتباط بین OpenGL و OpenGL ES و WebGL را نشان میدهد:
همانطور که در تصویر بالا میبینید، با انتشار OpenGL 2.0 یک قابلیت جدید و مهم به نام programmable shader functions معرفی شد. این قابلیت به OpenGL ES 2.0 انتقال یافت و اکنون جزو بخش هستهای WebGL 1.0 است.
shader functions یا shader برنامههای کامپیوتری هستند که امکان ساختن برنامههایی با جلوههای بصری پیشرفته توسط یک زبان برنامهنویسی خاص (متشابه با زبان C)، را فراهم میسازند. زبان برنامهنویسی که برای ساخت shaders مورد استفاده قرار میگیرد، shading language نامیده میشود. shading language مورد استفاده در OpenGL ES 2.0 بر اساس (OpenGL shading language (GLSL است که (OpenGL ES shading language (GLSL ES نیز نامیده میشود. بهدلیل اینکه WebGL بر اساس OpenGL ES 2.0 است، از اینرو برای ساخت shaders از GLSL ES استفاده میکند.
اکنون گروه Khronos مسئول تکامل بخشیدن و استاندارد کردن OpenGL است. این گروه در سال ۲۰۰۹ گروه کاری WebGL را راه انداخت و شروع به استاندارد کردن و توسعه دادن WebGL براساس OpenGL ES 2.0 کرد و اولین نسخهی WebGL را در سال ۲۰۰۹ انتشار داد.
در HTML، صفحههای dynamic بر اساس ترکیب javaScript و HTML (صرف نظر از کد server-side) ساخته میشوند. با معرفی WebGL، میبایست GLSL ES نیز به آن دو اضافه شود. این بدین معناست، صفحاتی که شامل WebGL هستند از سه زبان HTML5، javaScript و GLSL ES استفاده میکنند.
در تصویر زیر، معماری نرمافزار web page های قدیمی و web page هایی که اکنون از WebGL استفاده میکنند را میبینید:
از آنجا که GLSL ES عموماً در خود javaScript نوشته میشود، برای تولید اپلیکیشنهای WebGL فقط به فایلهای HTML و javaScript نیاز است.
منبع: وب تارگت
من خودم نتونستم از این تکنولوژی و مثالاش استفاده کنم، اگر سوالی داشتید میتونید توی وب تارگت مطرح کنید.