▁it ▁restricted ▁the ▁developer ▁to ▁' fixed - function ' ▁pixel ▁processing . ▁Quick ly ▁there ▁came ▁a ▁need ▁for ▁divers ification ▁of ▁the ▁looks ▁of ▁games . ▁Software ▁rendering ▁has ▁no ▁restrictions ▁because ▁an ▁arbitrary ▁program ▁is ▁executed . ▁So ▁graphics ▁cards ▁re int rodu ced ▁this ▁program m ability , ▁by ▁executing ▁small ▁programs ▁per ▁vertex ▁and ▁per ▁pixel / fragment , ▁also ▁known ▁as ▁sh aders . ▁Sh ader ▁languages , ▁such ▁as ▁High ▁Level ▁Sh ader ▁Language ▁( H LS L ) ▁for ▁Direct X ▁or ▁the ▁OpenGL ▁Sh ading ▁Language ▁( GL SL ), ▁are ▁C - like ▁programming ▁languages ▁for ▁sh aders ▁and ▁start ▁to ▁show ▁some ▁res embl ance ▁with ▁( ar bitr ary ▁function ) ▁software ▁rendering . ▁ ▁Since ▁the ▁ad option ▁of ▁graphics ▁hardware ▁as ▁the ▁primary ▁means ▁for ▁real - time ▁rendering , ▁CPU ▁performance ▁has ▁grown ▁stead ily ▁as ▁ever . ▁This ▁allowed ▁for ▁new ▁software ▁rendering ▁techn ologies ▁to ▁emer ge . ▁Although ▁largely ▁over shadow ed ▁by ▁the ▁performance ▁of ▁hardware ▁rendering , ▁some ▁modern ▁real - time ▁software ▁render ers ▁manage ▁to ▁combine ▁a ▁broad ▁feature ▁set ▁and ▁reasonable ▁performance ▁( for ▁a ▁software ▁render er ), ▁by ▁making ▁use ▁of ▁special ized ▁dynamic ▁compilation ▁and ▁advanced ▁instruction ▁set ▁extensions ▁like ▁S SE . ▁Although ▁now ad ays ▁the ▁domin ance ▁of ▁hardware ▁rendering ▁over ▁software ▁rendering ▁is ▁und is put ed ▁because ▁of ▁un par alle led ▁performance , ▁features , ▁and ▁continu ing ▁innov ation ,