• <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>

            戰魂小筑

            討論群:309800774 知乎關注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

               :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

            RenderTarget完成后,開始模擬OGRE的Compositor。

            OGRE的Compositor其實就是用于解決繪制PostEffect的,簡單的說,就是一種RenderTarget的流程控制腳本

            這是OGRE compositor文件的片段

            compositor Bloom
            {
                technique
                {
                    // Temporary textures
                    texture rt_output target_width target_height PF_R8G8B8
                    texture rt0 target_width_scaled 0.25 target_height_scaled 0.25 PF_R8G8B8
                    texture rt1 target_width_scaled 0.25 target_height_scaled 0.25 PF_R8G8B8
             
                    target rt_output
                    {
                        // Render output from previous compositor (or original scene)
                        input previous
                    }
             
                    target rt0
                    {
                        // Start with clear texture
                        input none
                        // Horizontal blur pass
                        pass render_quad
                        {
                            // Renders a fullscreen quad with a material
                            material Ogre/Compositor/BrightPass2
                            input 0 rt_output
                        }
                    }
             
                    target rt1
                    {
                        // Start with clear texture
                        input none
                        // Horizontal blur pass
                        pass render_quad
                        {
                            // Renders a fullscreen quad with a material
                            material Ogre/Compositor/BlurV
                            input 0 rt0
                        }
                    }
             
                    target rt0
                    {
                        // Start with clear texture
                        input none
                        // Horizontal blur pass
                        pass render_quad
                        {
                            // Renders a fullscreen quad with a material
                            material Ogre/Compositor/BlurH
                            input 0 rt1
                        }
                    }
             
                    target_output
                    {
                        // Start with clear output
                        input none
                        // Draw a fullscreen quad
                        pass render_quad
                        {
                            // Renders a fullscreen quad with a material
                            material Ogre/Compositor/BloomBlend2
                            input 0 rt_output
                            input 1 rt0
                        }
                    }
                }
            }

             

            大概我們知道,一個Compositor分為資源定義與繪制步驟(target xxx)

            而一個繪制步驟又分別定義:

            1. (輸入)繪制的是什么東西?

            2. (效果)繪制成什么樣子?

            3. (輸出)往哪里繪制?

            輸出方式在這個例子有2種:紋理(RT)和屏幕

            輸入方式有2中:紋理及場景

            我們可以使用一個回調來對一個繪制步驟提供繪制輸入

            繪制效果就是一大堆的Shader,這些shader都是基于一個quad來做的,也就是一個矩形,使用變換后的頂點和一個紋理坐標作為頂點定義

            不過這里是不需要做vertexshader的,僅僅ps足矣。

            繪制的最后,是將前面繪制的RT(紋理)混合起來

            當然,如果步驟比較多和復雜時,RT之間跟寄存器一樣,可以反復使用

            YR7HEX8VAB[67GPOWLNPIBA

            顯示茶壺法線的場景加上 Blur 的PostEffect

            <?xml version="1.0" encoding="gb2312" ?>
            <Compositor name = "bloom" >
              <Resource>
                <RenderTarget name ="rt_source" size="screenquad" />
                <RenderTarget name ="rt0" size="screenquad" />
                <RenderTarget name ="rt1" size="screenquad" />
              </Resource>
              <Step target="rt_source">
                <Geometry type ="callback" callback = "rt_input"/>
              </Step>
              <Step target="rt0">
                <Geometry type = "screenquad"/>
                <Effect name ="material\blurH.xml">
                  <Texture name ="mTexture" value ="rt_source" />
                </Effect>
              </Step>
              <Step target="rt1">
                <Geometry type = "screenquad"/>
                <Effect name ="material\blurV.xml">
                  <Texture name ="mTexture" value ="rt_source" />
                </Effect>
              </Step>
              <Step>
                <Geometry type = "screenquad"/>
                <Effect name ="material\combine.xml">
                  <Texture name ="mTexture1" value ="rt0" />
                  <Texture name ="mTexture2" value ="rt1" />
                </Effect>
              </Step>
            </Compositor>
            這是我的引擎里的Compositor腳本,還在慢慢加強功能,希望能有一天達到OGRE的Compositor功能
            posted on 2010-04-01 18:56 戰魂小筑 閱讀(2852) 評論(1)  編輯 收藏 引用 所屬分類: 游戲開發技術C++/ 編程語言渲染 Shader 引擎

            評論

            # re: 模擬OGRE的Compositor 2010-12-02 13:37 track
            nb  回復  更多評論
              

            久久精品国产亚洲av麻豆小说 | 综合久久给合久久狠狠狠97色| 国产精品九九久久精品女同亚洲欧美日韩综合区| 久久精品国产亚洲欧美| 久久久国产精华液| 久久精品国产亚洲AV大全| 久久精品亚洲精品国产欧美| 色综合久久无码五十路人妻 | 久久久久亚洲AV无码专区桃色 | 理论片午午伦夜理片久久| 久久精品亚洲精品国产色婷| 国产农村妇女毛片精品久久| 欧美熟妇另类久久久久久不卡| 久久久无码精品午夜| 欧美一区二区精品久久| 伊人久久大香线蕉av一区| 亚洲日韩欧美一区久久久久我| 久久福利青草精品资源站免费| 日韩AV无码久久一区二区| 久久久久久亚洲精品影院| 久久天天躁狠狠躁夜夜av浪潮| 久久亚洲国产午夜精品理论片 | 伊人久久久AV老熟妇色| 亚洲精品成人久久久| 久久精品亚洲福利| 国产精品gz久久久| 精品国产青草久久久久福利| 久久r热这里有精品视频| 99国产欧美久久久精品蜜芽| 久久精品无码一区二区无码 | 少妇无套内谢久久久久| 亚洲精品成人网久久久久久| 久久久噜噜噜久久| 欧美久久天天综合香蕉伊| 久久天天躁狠狠躁夜夜2020| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 9久久9久久精品| 嫩草影院久久国产精品| 精品99久久aaa一级毛片| 久久亚洲中文字幕精品一区| 亚洲精品tv久久久久|