مطلب2

آشنایی با تکنولوژی WebGL و مروری بر تاریخچه و معماری نرم ا فزاری آن

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 نیاز است.