Direct3d, shaderit

Tässä on huvin vuoksi vähän leikitty Direct3d ohjelmoinnin parissa.

Olisi 128x128 pisteen pinta, jota yritän saada piirtymään shadereiden avulla ( Gouraud varjotus kun ei oikeen pelitä riittävän hyvin ). Nyt se pukataan 128 triangle strippinä. Ihan perus kauraa, eli esimerkiksi normaaleita koitan saada jollain tavalla välitettyä interpoloituna pixel shaderille, jolloin siellä noi valoheijastusehvektit saisi kohtuu kivan näköisiksi :)

Jostain kumman syystä en kuitenkaan saa omaa verteksi shaderia toimimaan pixel shaderini kanssa 'yhteen'. Ongelma tuntuu olevan erityisesti verteksi shaderin puolella. Kun otan 'tekniikassa' käyttöön vain oman pixel shaderin, homma tuntuu pelittävän. Tietty tällöin en oikeen voi kustomoida, mitä verteksikohtaista dataa pixel shader saa...

Tekstuuri sämpläyksessä tekstuurissa olleet normaalit ei silloin interpoloitunut, tein oman interpoloinnin pixel shaderissa, tuli varjostus nätin pehmeäksi, mutta tämä syö kohtuuttomasti resursseja ( esim. käskyslotteja ), haluasin enempi tavaraa yhden 'passin' käsittelyyn :)

Mikäköhän tässä nyt oikeen mättää. Koodi kääntyy kyl, mutta data vertex->pixel shader välillä ei tunnut välittyvän :( Itseasiassa kuva ei piirry ruudulle, mutta PIXin mukaan vertex shader antaa oikeat arvot ulos.

Aikas nyyppä olen vielä täsää, viikko pari on tullut leikittyä:)

Hyvvii työkaluja kaivataan. Seuraavaksi kokeilussa ompi pari ATI/AMD välppää, kuten RenderMonkey.
1765
Äänestä

Muut lukivat myös

Vastaukset 1

Vanhimmat

Pikkasen eri tavalla pitää noi projektiot hoidella, kun käyttää omia shadereita ( mikä lie syynä ). Eli verteksi shaderi asetti koordinaatit sittenkin pöpelikköön ( pixel renderipuolella digataan ilmeisesti avaruudesta 0,0,0...1,1,1 ). Nyt kun säkällä sain jotain ruutuun, ni homma selkes :D

Noo, D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT optiolla mennään edelleenkin persiilleen, mutta nyt sentään pääsee eteenpäin.

Btw, tuli kummasti lisää puhtia grafiikkapuoleen. Ilmeisesti defaulttina on aikas tavalla läskiä, jos haluaa käyttää Micro$oftin omaa zydeemiä.

Äänestä

Ketjusta on poistettu 22 sääntöjenvastaista viestiä.

Kommentoi aloitusta


juupajuuei kirjoitti:

Tässä on huvin vuoksi vähän leikitty Direct3d ohjelmoinnin parissa.

Olisi 128x128 pisteen pinta, jota yritän saada piirtymään shadereiden avulla ( Gouraud varjotus kun ei oikeen pelitä riittävän hyvin ). Nyt se pukataan 128 triangle strippinä. Ihan perus kauraa, eli esimerkiksi normaaleita koitan saada jollain tavalla välitettyä interpoloituna pixel shaderille, jolloin siellä noi valoheijastusehvektit saisi kohtuu kivan näköisiksi :)

Jostain kumman syystä en kuitenkaan saa omaa verteksi shaderia toimimaan pixel shaderini kanssa 'yhteen'. Ongelma tuntuu olevan erityisesti verteksi shaderin puolella. Kun otan 'tekniikassa' käyttöön vain oman pixel shaderin, homma tuntuu pelittävän. Tietty tällöin en oikeen voi kustomoida, mitä verteksikohtaista dataa pixel shader saa...

Tekstuuri sämpläyksessä tekstuurissa olleet normaalit ei silloin interpoloitunut, tein oman interpoloinnin pixel shaderissa, tuli varjostus nätin pehmeäksi, mutta tämä syö kohtuuttomasti resursseja ( esim. käskyslotteja ), haluasin enempi tavaraa yhden 'passin' käsittelyyn :)

Mikäköhän tässä nyt oikeen mättää. Koodi kääntyy kyl, mutta data vertex->pixel shader välillä ei tunnut välittyvän :( Itseasiassa kuva ei piirry ruudulle, mutta PIXin mukaan vertex shader antaa oikeat arvot ulos.

Aikas nyyppä olen vielä täsää, viikko pari on tullut leikittyä:)

Hyvvii työkaluja kaivataan. Seuraavaksi kokeilussa ompi pari ATI/AMD välppää, kuten RenderMonkey.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu