• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            永遠(yuǎn)也不完美的程序

            不斷學(xué)習(xí),不斷實(shí)踐,不斷的重構(gòu)……

            常用鏈接

            統(tǒng)計(jì)

            積分與排名

            好友鏈接

            最新評(píng)論

            Material與shader在設(shè)計(jì)上的難題!

                    為了設(shè)計(jì)上的靈活,我把shader、紋理等都封裝到材質(zhì)(Material)里,以方便渲染對(duì)象在不同狀態(tài)下材質(zhì)的切換以達(dá)到不同的渲染效果。
                    但涉及到shader的設(shè)計(jì)就比較麻煩,因?yàn)閟hader需要設(shè)置里面的參數(shù),但由誰負(fù)責(zé)傳參數(shù)給它呢?如果由渲染對(duì)象負(fù)責(zé),那么每個(gè)材質(zhì)只要有shader,就每個(gè)渲染對(duì)象更新一次,這樣問題來了,一但切換了材質(zhì)后怎么辦?因此否定了這種做法。
                    另一種做法是由材質(zhì)更新shader的參數(shù),但材質(zhì)怎么知道shader要什么參數(shù)呢?這樣豈不是每個(gè)材質(zhì)要針對(duì)不同的shader繼承一個(gè)類?這樣設(shè)計(jì)也不靈活。而且shader需要更新的參數(shù)有時(shí)是來自渲染對(duì)象的。
                    到這里就比較頭痛了,到現(xiàn)在,我只能由shader自己主動(dòng)更新自己的參數(shù)。從shader中獲得參數(shù)列表,遍歷并更新。但這里也有問題,當(dāng)shader需要來自渲染對(duì)象中比較特殊的參數(shù)時(shí),應(yīng)該怎么取呢?例如要取水的紋理擾動(dòng)值等,我不可能在渲染對(duì)象的基類抽象出一個(gè)GetWaterDistort()這樣的接口吧?暫時(shí)想到的解決方法是:在每個(gè)渲染對(duì)象里定義一個(gè)表,存放shader需要的參數(shù),key為shader的參數(shù)名,value為其值。不過問題也出來:不知道值的size。不過可以暫時(shí)寫死在一個(gè)結(jié)構(gòu)體中。
                    不知道各位高人有什么意見,這問題困擾我太久了!

            posted on 2009-05-15 10:30 狂爛球 閱讀(2534) 評(píng)論(8)  編輯 收藏 引用 所屬分類: 圖形編程

            評(píng)論

            # re: Material與shader在設(shè)計(jì)上的難題! 2009-05-15 22:03 Davy.xu

            參考下OGRE的Compositor系統(tǒng)架構(gòu),自己做的材質(zhì)腳本解析器,很強(qiáng)大的組合材質(zhì)功能。

            我本人偏向于:每一種效果,比如水波動(dòng),使用渲染腳本和材質(zhì)參數(shù)來參與定制后,如果在運(yùn)行時(shí)需要定制,直接使用類似于shader參數(shù)一樣的字符串變量來設(shè)置,只不過這時(shí)候的接口是你自己的材質(zhì)系統(tǒng),這樣就可以適合各種材質(zhì)效果了。  回復(fù)  更多評(píng)論   

            # re: Material與shader在設(shè)計(jì)上的難題! 2009-05-16 21:57 魔鬼螳螂

            @Davy.xu
            OGRE的材質(zhì)腳本我看過,作為一個(gè)成熟的引擎,是非常有必要引入材質(zhì)系統(tǒng)的。
            不過不明白你這句話是什么意思:直接使用類似于shader參數(shù)一樣的字符串變量來設(shè)置。
            設(shè)置材質(zhì)參數(shù)?如果材質(zhì)參數(shù)需要通過某種方式計(jì)算出來呢?  回復(fù)  更多評(píng)論   

            # re: Material與shader在設(shè)計(jì)上的難題! 2009-05-17 22:27 shanoa

            博主的困擾我似乎看明白了,你是否可以就按照你說的用map來記錄shader參數(shù)列表呢?
            key=參數(shù)名
            value={參數(shù)長度,參數(shù)}  回復(fù)  更多評(píng)論   

            # re: Material與shader在設(shè)計(jì)上的難題! 2009-05-17 22:36 魔鬼螳螂

            @shanoa
            嗯,現(xiàn)在是這樣做了……  回復(fù)  更多評(píng)論   

            # re: Material與shader在設(shè)計(jì)上的難題! 2009-05-19 14:08 向往

            這個(gè)問題也困擾我好久了,值得探討.期望早出解決方法.  回復(fù)  更多評(píng)論   

            # re: Material與shader在設(shè)計(jì)上的難題! 2009-05-19 22:17 Davy.xu

            參考下http://www.hellocpp.net/Articles/Article/437.aspx  回復(fù)  更多評(píng)論   

            # re: Material與shader在設(shè)計(jì)上的難題! 2009-06-20 22:41 Loki

            阿梁生,唔好誤導(dǎo)人啊,哈哈  回復(fù)  更多評(píng)論   

            # re: Material與shader在設(shè)計(jì)上的難題! 2009-06-21 10:24 魔鬼螳螂

            @Loki
            邊位啊?所上名來!  回復(fù)  更多評(píng)論   

            久久影视综合亚洲| 久久97精品久久久久久久不卡 | 色欲久久久天天天综合网| 国产精品成人久久久久久久| 日产精品久久久久久久性色| 热re99久久精品国99热| 777午夜精品久久av蜜臀| 久久成人国产精品免费软件| 亚洲国产日韩综合久久精品| 久久综合伊人77777麻豆| 亚洲日韩欧美一区久久久久我 | 人妻无码αv中文字幕久久琪琪布| 精品水蜜桃久久久久久久| 国产AV影片久久久久久| 久久99国产精品成人欧美| 91精品国产高清久久久久久国产嫩草 | 久久精品成人免费国产片小草| 久久国产香蕉一区精品| 久久精品无码一区二区app| 亚洲七七久久精品中文国产| 欧美亚洲国产精品久久高清| 久久免费的精品国产V∧| 久久国产精品99精品国产987| 国产精品青草久久久久福利99| 久久精品国产99久久丝袜| 久久久精品人妻无码专区不卡| 国产精品一区二区久久精品涩爱 | 国产精品久久久久久五月尺| 色综合久久久久综合体桃花网 | 久久久久久综合一区中文字幕 | 久久精品国产99久久丝袜| 亚洲欧洲久久久精品| 久久久久亚洲AV成人片| 亚洲午夜久久影院| 99蜜桃臀久久久欧美精品网站| 九九精品99久久久香蕉| 精品久久国产一区二区三区香蕉| 日韩AV毛片精品久久久| 国产产无码乱码精品久久鸭| 久久人人超碰精品CAOPOREN| 无码人妻精品一区二区三区久久|