Az értékadás formája:
A balérték és a jobbérték típusának vagy meg kell egyezni vagy a jobbértéknek implicit módon konvertálhatónak kell lennie a balértékre. Balértékek a következő típusú változók lehetnek: beépített típusú, struktúrák, tömbök, struktúra adattagja, zárójelezett balérték és tömb valahanyadik eleme, amely balérték.
További értékadó operátorok: +=, -=, %=, *=, /=, <<=, >>=, &=, |=, ^=
Az elágazásra használhatóak az if, if-else és switch vezérlési szerkezetek, amelyek használatukban megegyeznek a C++-al, kivéve, hogy az if utáni feltétel csak bool típusú kifejezés lehet.
A C++-ban is használatos for, while, do-while ciklusok állnak rendelkezésre, azzal a különbséggel, hogy a feltételeknek mindig bool típusú kifejezéseknek kell lenniük. A nagyon hosszú ideig tartó ciklusok és a végtelen ciklusok következményei platformfüggőek.
Goto nincs a nyelvben. A countinue és break utasítások a C++-ban lévőeknek felelnek meg.
A discard utasítás csak fragment shader-ekben használható és hívásakor befejezi az utasítások végrehajtását az aktuális pixelen. Hatására a pixel adatai nem frissülnek. Általában elágazások törzsében használatos. Például a fragment shader ellenőrzi egy pixel alpha értékét, de ha ez az érték kisebb, mint egy adott érték, akkor a discard hívható, így semmi módosítást nem alkalmaz rá.
A return utasítás hívása visszatér a függvényből a megadott értékkel, de lehet üres return is, ha a függvény void visszatérési típusúnak lett deklarálva. A return hívható a main függvényben is. Ha fragment shader main függvényében hívjuk a return-t, akkor az nem ekvivalens a discard-al.