HLSL programozás. Grafikus játékok fejlesztése Szécsi László t06-hlsl

Hasonló dokumentumok
HLSL programozás. Szécsi László

Direct3D pipeline. Grafikus játékok fejlesztése Szécsi László t03-pipeline

D3D, DXUT primer. Grafikus játékok fejlesztése Szécsi László t01-system

Textúrák. Szécsi László

A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja Teljesítménykövetelmények:

Direct3D interface. Grafikus játékok fejlesztése Szécsi László t04-pipecontrol

Plakátok, részecskerendszerek. Szécsi László

OpenGL Compute Shader-ek. Valasek Gábor

2D képszintézis. Szirmay-Kalos László

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

2. Generáció ( ) 3. Generáció (2001) NVIDIA TNT2, ATI Rage, 3dfx Voodoo3. Klár Gergely

Véletlen szám generálás Labirintus felépítése 1x1-es felbontástól a teljes méretig

Klár Gergely 2010/2011. tavaszi félév

Valasek Gábor

Fraktálok és káosz. Szirmay-Kalos László

Grafikus csővezeték és az OpenGL függvénykönyvtár

1. Bevezetés 1. Köszönetnyilvánítás A számítógépes játékfejlesztésről 3

Geometriai modellezés. Szécsi László

Tanács Attila. Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Párhuzamos és Grid rendszerek

Számítógépes grafika

Árnyalás, env mapping. Szécsi László 3D Grafikus Rendszerek 3. labor

GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Grafikus csővezeték 1 / 44

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Google Summer of Code OpenCL image support for the r600g driver

Haladó Grafika EA. Inkrementális képszintézis GPU-n

Számítógépes Graka - 4. Gyak

GPGPU. Architektúra esettanulmány

Farkas Gyula Szakkollégium Bit- és számtologatók. DirectX9 1. Szín, fény, textúra 2. Stencil buffer használata (tükörkép, hamis árnyék)

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Bevezetés a CGI-be. 1. Történelem

Fejlett programozási nyelvek C++ Iterátorok

Grafikus csővezeték (Általános áttekintés) Grafikus csővezeték (Általános áttekintés)

Nincs szinkronizáció és kommunikáció Csővezeték alkalmazása Párhuzamosítás

KÉPFELDOLGOZÁS A DIRECTX 9 MAGAS SZINTŰ ÁRNYALÓ NYELVÉNEK SEGÍTSÉGÉVEL

GPGPU. GPU-k felépítése. Valasek Gábor

2. Gyakorlat Khoros Cantata

Grafikus csővezeték 2 / 77

Python tanfolyam Python bevezető I. rész

Klár Gergely 2010/2011. tavaszi félév

Tanács Attila. Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

c) Poligon árnyalási módok (Wireframe, Wiremesh, Hidden Line, Filled Hidden Line, Constant, Smooth, Phong).

Pénzügyi algoritmusok

A bemutatott példa a Phong modell egy egyszerűsített változatát alkalmazza a Blinn-Phong-féle megközelítést

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

C programozási nyelv Pointerek, tömbök, pointer aritmetika

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Programozási nyelvek Java

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Szkriptnyelvek. 1. UNIX shell

Bevezetés, a C++ osztályok. Pere László

Szoftvertechnológia alapjai Java előadások

UniSim Design. Dinamikus modellezés. BME-KKFT Farkasné Szőke-Kis Anita Stelén Gábor

ELTE SAP Excellence Center Oktatóanyag 1

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Komputeralgebra rendszerek

Transzformációk. Grafikus játékok fejlesztése Szécsi László t05-transform

GPGPU alapok. GPGPU alapok Grafikus kártyák evolúciója GPU programozás sajátosságai

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Termék modell. Definíció:

Hajder Levente 2016/2017.

Realisztikus színtér 1 / 59

Dr. Schuster György február / 32

A TV2 Mű szaki Mé dia Spécifika ció ja nak mégféléló fa jlók éló a llí ta sa kű ló nbó zó va gó i szóftvérékbén

Magas szintű optimalizálás

Tartalom. Hajder Levente 2016/2017. I. félév

Programozás II. 2. Dr. Iványi Péter

A számítógépes grafika alapjai kurzus, vizsgatételek és tankönyvi referenciák 2014

Farkas Gyula Szakkollégium Bit- és számtologatók. DirectX9 felhasználása számítógépes grafikában (bevezető egy primitív keretrendszer)

Informatika 1 2. el adás: Absztrakt számítógépek

Programozási nyelvek (ADA)

Programok értelmezése

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Java és web programozás

Mintavételes szabályozás mikrovezérlő segítségével

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Tartalomjegyzék. Köszönetnyilvánítás... xv. Előszó... xvii. 1. Bevezető D-történelem Matematikai alapok... 7

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

Modellezési transzformáció: [r lokális,1] T M = [r világ,1] Nézeti transzformáció: [r világ,1] T v = [r képernyo,1]

Imperatív programozás

Adatelemzés SAS Enterprise Guide használatával. Soltész Gábor solteszgabee[at]gmail.com

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Tartalom. Tartalom. Hajder Levente 2018/2019. I. félév

ANDROID ALKALMAZÁSFEJLESZTÉS

HARDVERESEN GYORSÍTOTT 3D/2D RENDERELÉS

Data Integrátorok a gyakorlatban Oracle DI vs. Pentaho DI Fekszi Csaba Ügyvezető Vinnai Péter Adattárház fejlesztő február 20.

FELÜLET...13 PROJEKTTERV...14

Szoftver-modellellenőrzés absztrakciós módszerekkel

Átírás:

HLSL programozás Grafikus játékok fejlesztése Szécsi László 2013.02.16. t06-hlsl

RESOURCES PIPELINE STAGES RENDER STATES Vertex buffer Instance buffer Constant buffers and textures Index buffer Constant buffers and textures Output buffer Constant buffers and textures Render target Render target textures target textures Depth-stencil texture Input Assembler I. input streaming vertex data, instance data Vertex Shader processed vertex data Input Assembler II. primitive setup primitive data Geometry Shader primitive strip data Rasterizer face culling depth bias adjustment clipping homogenous division viewport transformation output filtering fragments with interpolated data Fragment Shader fragment color and depth Output merger stencil test depth test blending Input layout Shader program Uniform parameters Primitive type Shader program Uniform parameters Cull mode Depth bias Viewport Fill mode Filtering Shader program Uniform parameters Depth-stencil state Blending state

Vertex shader és környezete Vertex buffer pos normal color tex Vertex shader modelviewproj POSITION, NORMAL, COLOR, TEXTCOORD, model model inverse Illumináció Vágás Állapot Transzformációk Fényforrások Anyag SV_Position, COLOR, TEXTCOORD háromszögre Homogén osztás: X=X/w, Y=Y/w, Z=Z/w POSITION, COLOR, TEXTCOORD, új (vágás utáni) háromszögre

Alap vertex shader float4x4 modelviewprojmatrix; struct IaosSimple { float4 pos float4 color float2 tex }; struct VsosSimple { float4 hpos float3 color float2 tex }; : POSITION; : COLOR; : TEXCOORD; : SV_Position; : COLOR; : TEXCOORD; uniform paraméter VsosSimple vssimple(iaossimple input) { VsosSimple output = (VsosSimple)0; output.hpos = mul(input.pos, modelviewprojmatrix); output.tex = input.tex; output.color = input.color; return output; }

Pixel shader és környezete SV_Position, COLOR, TEXTCOORD, háromszögekre Háromszög kitöltés és lineáris interpoláció SV_Position, COLOR, TEXTCOORD pixelekre SV_Position, Pixel shader Textúrázás: texture.sample(u,v)*color COLOR Pixel műveletek blending, z-bufferelés Állapot textúra erőforrás szűrési paraméterek Textúra memória Rasztertár

Alap pixel shader SamplerState linearsampler { Filter = MIN_MAG_MIP_LINEAR; AddressU = Wrap; AddressV = Wrap; }; Texture2D colortexture; textúraszűrési beállítások uniform textúra paraméter float4 pssimple(vsossimple input) : SV_Target { float4 color = colortexture.sample(linearsampler, input.tex) * input.color; return color; } formailag ugyanaz, mint ami a vertex shader outputja volt, de 3 vertex között interpolált értékek vannak benne

Effect file szerkesztés VS 2008/2010 NShader extension: syntax highlighting FX composer syntax highlighting azonnali fordítás és hibajelzés eredmény látható uniform paraméterek kézzel állíthatók fxc.exe megnézni a gépi kódot

Effect filebe mit írunk globális változók, textúra samplerek HLSL függvények technique definíciók pass definíciók render state vertex shader pixel shader

Shader fordítás effect fileból RasterizerState wireframerasterizer { CullMode = none; FillMode = wireframe; }; technique11 simple { pass simple { VertexShader = compile vs_5_0 vssimple(); SetRasterizerState( wireframerasterizer ); PixelShader = compile ps_5_0 pssimple(); } } cél profil

Profil milyen gépi kódot ért a GPU? szerencsére nem minden kártyán más szabványosítva van ezek a Shader Model verziók illetve azokon belül a különböző shaderekhez tartozó profilok mert más utasítások lehetnek pl. egy vertex és egy pixel shaderben

Profilok Shader Model 1: vs_1_0, ps_1_0 ps_1_4 pár utasítás, regisztertologatás,... Shader Model 2: vs_2_0, ps_2_0 256 utasítás, swizzle, 16 textúra Shader Model 3 : vs_3_0, ps_3_0 vertex texture, dynamic flow, 512 op, dep. read Shader Model 4: vs_4_0, gs_4_0, ps_4_0 végtelen minden, stream, texture object... Shader Model 5: HW tesszelláció, dyn. bind

Shader Model 5 utasításból nem fogunk kifogyni textúraolvasás bármely shaderből de a mipmap szint csak pixel shaderből automatikus geometry shader, tesszellátor textúratömbök random access írható/olvasható textúrák atomi műveletek int aritmetika, bitműveletek

Vektorműveletek beépített vektortípusok float, float2, float3, float4 (bool, int, uint ugyanígy) változó definíció, mint C++-ban float4 color; inicializálás értékadás numerikus konstruktorral float4 color = float4(1, 1, 0.3, 1); color = float4(0.1, 0, 0.3, 1);

Swizzle float4 color = float4(1, 1, 0.3, 1); color.x = 0.5; float2 twochannels = color.rg; float4 pos; pos.xyz = float3(1, 0, 0); pos.w = 1;

Műveletek az összes elemre vonatkoznak float3 v1 = float3(1, 5, 0.3); float3 v2 = float3(0, 0, -0.3); bool3 b1 = v1 < v2; if( all(b1) ) v1 = v2; v1 *= 2; //összes elem * 2 v1 *= v2; //elemenként HLSL intrinsic float scalarprod = dot(v1, v2); float3 crossprod = cross(v1, v2); crossprod = normalize(crossprod);