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

            WOW地形Shader分析(轉(zhuǎn))

            SPXG // 標(biāo)識(shí)
            // 用到5張圖片:
            {
               blendTexture  = 0
               layer0Texture = 1
               layer1Texture = 2
               layer2Texture = 3
               layer3Texture = 4
            }
            !!ARBfp1.0
            // 定義常量:
            PARAM c[1] = { { 1, 0.30000001, 0.69999999 } };
            // 聲明3個(gè)寄存器:
            TEMP R0;
            TEMP R1;
            TEMP R2;
            // 開始混合:
            // 一.第0層和第1層使用第4張圖的x通道作為alpha進(jìn)行混合:
            TEX R1, fragment.texcoord[0], texture[0], 2D;
            TEX R0, fragment.texcoord[1], texture[1], 2D;
            ADD R2, R0, -R1;
            // r2=Tex1-Tex0
            TEX R0, fragment.texcoord[4], texture[4], 2D;
            MAD R2, R0.x, R2, R1;
            // r2 = Tex4.x*r2+Tex0
            // 說明:
            // 其中的Tex4.x是對(duì)應(yīng)第1層alpha值, 下面把Tex4.x當(dāng)a1看
            // 即 r2 = a1 * (Tex1-Tex0) + Tex0
            // 轉(zhuǎn)換一下即是: Tex0*(1-a1)+a1*Tex1, 呵呵,看到了吧,這就是混合公式!
            // 二.第2層和前面結(jié)果使用第4張圖的y通道作為alpha進(jìn)行混合:
            TEX R1, fragment.texcoord[2], texture[2], 2D;
            ADD R1, R1, -R2;
            // r1=Tex2-r2
            MAD R2, R0.y, R1, R2;
            // r2 = Tex4.y*r1+r2, 即 a2*r1+r2 = a2*(Tex2-r2)+r2, 即r2*(1-a2)+Tex2*a2, 其中r2即是上次0和1層混合后的結(jié)果
            // 三.第3層和前面結(jié)果使用第4張圖的z通道作為alpha進(jìn)行混合:
            TEX R1, fragment.texcoord[3], texture[3], 2D;
            ADD R1, R1, -R2;
            // r1=Tex3-r2
            MAD R1, R0.z, R1, R2;
            // r1=a3*r1+r2 , 即 a3*r1+r2 = a3*(Tex3-r2)+r2, 即r2*(1-a3)+Tex3*a3
            // 這樣r1就保存了最終的混合結(jié)果
            // 四.讓陰影地表光澤系數(shù)為0(Tex4.w即a通道代表地形的陰影,0為陰影,1為正常.而每層貼圖中的a通道是光澤通道,所以R1.w保存的是最終的光澤通道值):
            MUL R0.x, R1.w, R0.w;
            // r0.x = r1.w(光澤)*Tex4.w(陰影值, 是陰影則=0,否則=1)
            // 計(jì)算削減系數(shù)?
            MAD R0.w, R0, c[0].y, c[0].z; // r0乘上0.3(削減了30%)再加上一個(gè)常量0.69999999
            // 反射高光 = secondary_color(反射光)*光澤:
            MUL R0.xyz, R0.x, fragment.color.secondary;
            // 貼圖最終color = 最終貼圖混出的color*削減系數(shù):
            MUL R1.xyz, R1, R0.w;
            // 貼圖最終color * primary_color(光照色或是頂點(diǎn)色) + 反射高光:
            MAD result.color.xyz, R1, fragment.color.primary, R0;
            // alpha:
            MOV result.color.w, c[0].x;
            END
              
              

            本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/flipcode/archive/2008/03/03/2143452.aspx

            posted on 2009-12-11 02:04 RedLight 閱讀(858) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 它不是一個(gè)人(WOW研究專區(qū))

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導(dǎo)航

            統(tǒng)計(jì)

            公告


            Name: Galen
            QQ: 88104725

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            相冊(cè)

            My Friend

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲国产成人久久综合一| 狠狠色丁香婷婷久久综合五月| 精品久久人妻av中文字幕| 天天爽天天爽天天片a久久网| 国产成人精品久久一区二区三区av | 一级a性色生活片久久无| 亚洲AV日韩精品久久久久久| 久久国产免费观看精品| 久久99热这里只有精品66| 久久精品国产精品亚洲精品| 国产偷久久久精品专区| 亚洲国产成人久久精品动漫| 亚洲色欲久久久综合网| 人妻丰满?V无码久久不卡| 99久久99这里只有免费费精品| 亚洲国产成人久久综合一区77| 精品综合久久久久久888蜜芽| 看全色黄大色大片免费久久久| 久久久无码精品亚洲日韩按摩| 久久亚洲AV无码精品色午夜| 久久最近最新中文字幕大全| 色欲久久久天天天综合网精品| 少妇久久久久久被弄到高潮| 精品久久久久久无码人妻蜜桃| 久久香蕉国产线看观看乱码| 99久久国产热无码精品免费| 日韩精品久久久久久久电影| 久久99精品免费一区二区| 国产2021久久精品| 亚洲狠狠综合久久| 久久精品国产亚洲一区二区| 青青青国产精品国产精品久久久久 | 久久久久久国产a免费观看黄色大片| 青青热久久综合网伊人| 91精品无码久久久久久五月天 | 久久精品国产一区二区三区不卡| 蜜桃麻豆www久久| 精品国产91久久久久久久a| 精品乱码久久久久久夜夜嗨 | 国产精品熟女福利久久AV| 91秦先生久久久久久久|