Tehnologii New Media
Intro
Claudia Chiriță . 2025/2026
Ce?
- tehnologii pentru dezvoltarea de aplicații pentru new media
Ce?
- intro în grafică 2D și 3D pentru web: WebGL2, WebGPU, three.js
Ce?
- intro în limbaje de programare vizuală multimedia de tip
dataflow: Pure Data (pd) și Max
Ce?
- intro în programarea VR: WebXR
Note?
notă-curs = nlab + npro + 10 (oficiu)
nlab = notă-activitate-laborator // <= 30 puncte
npro = notă-proiect1 + notă-proiect2 // <= 60 puncte
sau
nlab = notă-activitate-laborator // <= 30 puncte
npro = notă-proiect1 + notă-proiect2
+ notă-proiect3 // <= 90 puncte
npro >= 30 // condiția de promovare
Proiect
- în echipe de 3-4 studenți
- la alegere 2 sau 3 teme din cele 4 studiate
- formarea echipelor + alegerea proiectului: 1 aprilie
- checkpoint după vacanța de primăvară
- limbaje / API / framework la alegere
Bibliografie
resurse online: documentație oficială + tutoriale
Ce trebuie să știu deja?
- html + JavaScript + C/C++
- noțiuni elementare de geometrie
- noțiuni elementare de grafică 3D binevenite
- API JavaScript pentru randare grafică 2D și 3D interactivă în cadrul browserului fără folosirea de plug-in-uri
- standard web open, royalty-free, cross-platform
- integrat cu alte standarde web, bazat pe OpenGL ES, expus la ECMAScript prin elementul HTML5 Canvas
WebGL – CE? UNDE?
- permite folosirea de physics, procesare de imagini și efecte (GPU-accelerated) în Canvas
- elementele WebGL pot fi combinate cu alte elemente HTML și integrate cu alte părți dintr-o pagină web sau cu backgroundul paginii
- WebGL este integrat în toate browserele moderne; dispozitivul utilizatorului trebuie să aibă însă hardware-ul care să permită executarea feature-urilor oferite
- 2006: WebGL a evoluat din experimente Canvas 3D ale lui Vladimir Vukićević la Mozilla
- 2009: consorțiul non-profit Khronos Group a creat WebGL Working Group (Apple, Google, Mozilla, Opera)
- 2011: WebGL 1.0 – bazat pe OpenGL ES 2.0 și oferă un API pentru grafică 3D
- 2017: WebGL 2.0 – bazat pe OpenGL ES 3.0, garantează disponibilitatea multor extensii opționale ale WebGL 1.0 și expune și API-uri noi; backward compatible
- 2024: WebGPU – capacități extinse, interfață mai modernă, acces GPU direct (broswer support încă restrâns)
programele WebGL constau din:
- control code – scris în JavaScript
- shader code – scris în GLSL (OpenGL ES Shading Language), un limbaj similar cu C/C++, care este executat în GPU (Graphics Processing Unit)
program = pereche de funcții:
- vertex shader: calculează pozițiile unor vârfuri; pe baza pozițiilor, WebGL rasterizează diferite tipuri de primitive (puncte, linii, triunghiuri)
- când primitivele sunt rasterizate este executată o a doua funcție definită de user
- fragment shader: calculează o culoare pentru fiecare pixel al primitivei care este desenată la acel moment
- pentru fiecare lucru pe care vrem să îl desenăm trebuie să setăm stările pentru execuția celor două funcții și să apoi să le rulăm prin apelarea gl.drawArrays sau gl.drawElements
- datele la care vrem ca shaderele să aibă acces trebuie furnizate GPU-ului
un shader poate primi date în 4 moduri:
- buffers: array-uri de date binare încărcate în GPU (poziții, normale, coordonate pentru texturi, culori pentru vârfuri etc.)
- uniforms: variabile globale setate înainte de execuția programului shader
un shader poate primi date în 4 moduri:
- textures: array-uri de date pe care le accesăm random în programul shader (image data de regulă)
- varyings: metodă prin care vertex shader trimite date către un fragment shader. În funcție de ce este randat (puncte, linii, triunghiuri), valorile setate într-un varying de vertex shader vor fi interpolate în timpul execuției fragment shaderului
(\ /)
( . .)
C(")(")
întrebări?