Unified shader-modell är en term som används för att beskriva två liknande, men samtidigt separata begrepp: en unified shader-arkitektur ( engelska Unified Shading Architecture ), som beskriver hårdvarunivån, och en unified shader-modell , som beskriver mjukvarulagret .
Unified Shader Model, känd i Direct3D 10 som Shader Model 4.0, använder en konsekvent (liknande) uppsättning kommandon för alla shader- typer [1] . Shaders av alla typer har mycket liknande möjligheter - de kan "läsa" texturer , databuffertar och köra samma uppsättning aritmetiska instruktioner.
Instruktionsuppsättningen är dock inte helt densamma i alla shadertyper; till exempel kan endast pixelskuggningen läsa texturer med implicita koordinatgradienter; och endast geometriskuggningen kan återge ytterligare primitiver, och så vidare [1] .
Tidiga shader-modeller (Shader Model 1.x) använde väldigt olika instruktionsuppsättningar för vertex- och pixelshaders, där vertexshaders hade en mycket mer flexibel instruktionsuppsättning. Senare shader-modeller (2.x och 3.0) minskade i allt högre grad skillnaderna, vilket ledde till en enhetlig shader-modell.
När en GPU stöder en enhetlig shader-modell är det vettigt att designa dess beräkningsenheter så att någon av dessa enheter kan köra vilken typ av shader som helst. När GPU-beräkningsenheterna är "unified", det vill säga kan köra vilken typ av shader-program som helst, kallas detta en "Unified Shader Architecture". Oftast är sådana GPU:er sammansatta av en uppsättning beräkningsenheter och dynamiska schemaläggnings-/lastbalanseringsenheter för att fördela körning av shader-program över alla beräkningsenheter.
Maskinvara behöver inte ha en enhetlig shader-arkitektur för att stödja en enhetlig shader-modell och vice versa. Direct3D 10-kompatibla GPU:er kan fortfarande ha dedikerade geometri-, vertex- och pixelprocessorer. Tekniskt äldre GPU:er som stöder Shader Model 3.0 kan också delvis köra Unified Shader Model, som sett med Xenos GPU för Xbox 360 -spelkonsolen .
Den enhetliga shader-arkitekturen tillåter mer flexibel användning av GPU-resurser [2] . Till exempel, i förhållanden med simulering av tunga nivåer av geometri, kan den enhetliga shader-arkitekturen använda alla GPU-enheter för att beräkna vertex- och geometriskuggningar. Och vice versa; när geometrin inte är komplex, men många komplexa pixeleffekter simuleras, såsom Parallax-ocklusionsmapping , partikelsystem och så vidare, kan alla beräkningsenheter riktas till att exekvera pixelskuggningar.
Den enhetliga shader-arkitekturen stöds av GeForce 8 , Radeon R600 , S3 Graphics Chrome 400 GPU:er, Intel GMA X3000, Xbox 360:s GPU , Qualcomm Adreno 200-serien , Mali Midgard, PowerVR SGX GPU:er och mer.