青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Code Knight

Programming is so cool
隨筆 - 52, 文章 - 0, 評論 - 14, 引用 - 0
數據加載中……

圖形學學習筆記2(cel-shading分析)

 

參看word文檔
// -------------------------------

// Cel Shading Section

// -------------------------------

vertex_program Ogre/CelShadingVP cg

{

    source Example_CelShading.cg

    entry_point main_vp

    profiles vs_1_1 arbvp1

 

    default_params

    {

        param_named_auto lightPosition light_position_object_space 0        param_named_auto eyePosition camera_position_object_space

        param_named_auto worldViewProj worldviewproj_matrix

        param_named shininess float 10

    }

}

 

fragment_program Ogre/CelShadingFP cg

{

    source Example_CelShading.cg

    entry_point main_fp

    profiles ps_1_1 arbfp1 fp20

}

 

 

material Examples/CelShading

{

    technique

    {

        pass

        {

            vertex_program_ref Ogre/CelShadingVP

            {

                // map shininess from custom renderable param 1

                param_named_auto shininess custom 1

// 終于知道param_named_auto第三個參數的作用了,用于給程序中賦值的索引

sub->setCustomParameter(CUSTOM_SHININESS, Vector4(10.0f, 0.0f, 0.0f, 0.0f)); CUSTOM_SHININESS == 1

            }

            fragment_program_ref Ogre/CelShadingFP

            {

                // map diffuse from custom renderable param 2

                param_named_auto diffuse custom 2

                // map specular from custom renderable param 2

                param_named_auto specular custom 3

            }

            texture_unit

            {

                texture cel_shading_diffuse.png 1d

                tex_address_mode clamp

                filtering none

            }

            texture_unit

            {

                texture cel_shading_specular.png 1d

                tex_address_mode clamp

                filtering none

            }

            texture_unit

            {

                texture cel_shading_edge.png 1d

                tex_address_mode clamp

                filtering none

            }

        }

    }

   

}

 

 

////////////////////////////////////////////////////////////////////////////////////下面是cg文件

////////////////////////////////////////////////////////////////////////////////

 

/* Cel shading vertex program for single-pass rendering

   In this program, we want to calculate the diffuse and specular

   ramp components, and the edge factor (for doing simple outlining)

   For the outlining to look good, we need a pretty well curved model.

*/

void main_vp(float4 position    : POSITION,

             float3 normal      : NORMAL,[U1] 

             // outputs

             out float4 oPosition    : POSITION,

             out float diffuse     : TEXCOORD0,

             out float specular    : TEXCOORD1,

             out float edge        : TEXCOORD2,[U2] 

             // parameters

             uniform float3 lightPosition, // object space:世界坐標系

             uniform float3 eyePosition,   // object space

             uniform float4 shininess,

             uniform float4x4 worldViewProj)

{

    // calculate output position

    oPosition = mul(worldViewProj, position);

 

    // calculate light vector

    float3 N = normalize(normal);

    float3 L = normalize(lightPosition - position.xyz);

   

    // Calculate diffuse component

    diffuse = max(dot(N, L) , 0);

 

    // Calculate specular component

    float3 E = normalize(eyePosition - position.xyz);

    float3 H = normalize(L + E);

    specular = pow(max(dot(N, H), 0), shininess[U3] );

    // Mask off specular if diffuse is 0

    if (diffuse == 0) specular = 0;

 

    // Edge detection, dot eye and normal vectors

    edge = max(dot(N, E), 0); // 法線與視線平行的點認為是標遠,給予黑色溝邊

}

 

void main_fp(float diffuseIn    : TEXCOORD0,

             float specularIn   : TEXCOORD1,

             float edge         : TEXCOORD2,

[U4]            

             out float4 colour : COLOR,

             

             uniform float4 diffuse,

             uniform float4 specular,

             

             uniform sampler1D diffuseRamp,

             uniform sampler1D specularRamp,

             uniform sampler1D edgeRamp[U5] )

{

    // Step functions from textures

    diffuseIn = tex1D(diffuseRamp, diffuseIn).x;

    specularIn = tex1D(specularRamp, specularIn).x;

    edge = tex1D(edgeRamp, edge).x;

 

    colour = edge * ((diffuse * diffuseIn) +

                    (specular * specularIn));

}


 [U1]這里是GPU傳進來的,POSITION:頂點坐標,NORMAL法線,去看看hlsl的語意定義

 [U2]out都是輸出參數,改變他們的值輸出之后被ps獲取

 [U3]m下標gls,為材料的光澤度

 [U4]得到的是vsout出來的值

 [U5]texture_unit中得到,順序根據定義的順序texture_unit

                     {

                            texture cel_shading_diffuse.png 1d

                            tex_address_mode clamp

                            filtering none

                     }

                     texture_unit

                     {

                            texture cel_shading_specular.png 1d

                            tex_address_mode clamp

                            filtering none

                     }

                     texture_unit

                     {

                            texture cel_shading_edge.png 1d

                            tex_address_mode clamp

                            filtering none

                     }

posted on 2010-02-23 21:14 Code Knight 閱讀(773) 評論(0)  編輯 收藏 引用 所屬分類: 圖形學

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久琪琪电影院| 久久久久www| 欧美日韩在线免费观看| 夜夜嗨av一区二区三区四季av| 亚洲高清不卡| 欧美大片网址| 亚洲深夜福利网站| 亚洲少妇中出一区| 国产一区二区三区高清在线观看| 久久久久国产精品一区| 老司机凹凸av亚洲导航| 一本久道久久综合狠狠爱| 在线视频亚洲欧美| 国内不卡一区二区三区| 久久午夜视频| 欧美成人dvd在线视频| 一本色道88久久加勒比精品| 亚洲专区一区| 在线精品视频免费观看| 最近中文字幕日韩精品| 国产精品嫩草99av在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美v国产在线一区二区三区| 一本色道综合亚洲| 亚洲欧美一区二区三区久久 | 久久婷婷av| 99re6热只有精品免费观看| 亚洲女与黑人做爰| 亚洲电影在线看| 一区二区三区久久久| 黄网动漫久久久| 一区二区三区欧美| 在线播放精品| 亚洲一区二区av电影| 亚洲精品久久久久久久久久久久| 99精品99| 91久久久在线| 小处雏高清一区二区三区| 亚洲精品美女在线| 久久大香伊蕉在人线观看热2| 一区二区三区久久久| 久久免费视频这里只有精品| 亚洲欧美电影在线观看| 欧美电影免费| 美女诱惑一区| 国内外成人在线视频| 亚洲一区二区高清| 日韩午夜av在线| 麻豆精品在线播放| 免费不卡在线观看| 国产亚洲欧美另类中文| 亚洲一区三区电影在线观看| 一区二区三区欧美亚洲| 美女爽到呻吟久久久久| 美女图片一区二区| 国内久久视频| 久久精品国产第一区二区三区最新章节 | 国产精品99久久久久久宅男 | 国产一区二三区| 亚洲一区二区欧美| 亚洲在线视频观看| 欧美日韩你懂的| 亚洲日本va在线观看| 亚洲精品免费看| 免费国产一区二区| 欧美激情国产高清| 91久久国产精品91久久性色| 久久综合电影一区| 久久天天躁狠狠躁夜夜爽蜜月| 国产日韩欧美一区二区三区在线观看 | 免播放器亚洲一区| 亚洲黄色免费| 欧美激情在线免费观看| 亚洲精品免费一二三区| 中文精品在线| 国产女主播视频一区二区| 午夜视频一区二区| 久久嫩草精品久久久久| 激情伊人五月天久久综合| 久久频这里精品99香蕉| 亚洲国产一区二区a毛片| 一本久道久久久| 国产精品萝li| 久久久中精品2020中文| 欧美激情一区二区三区全黄| 一本色道久久88综合亚洲精品ⅰ| 国产精品成人一区二区| 性欧美在线看片a免费观看| 久久综合电影| 一区二区三区精品| 国产精品一区在线播放| 久久精品一本| 99re亚洲国产精品| 久久久久久9999| 亚洲精品乱码久久久久久蜜桃91| 欧美三级韩国三级日本三斤| 性高湖久久久久久久久| 欧美大片在线观看一区| 亚洲一区二区黄色| 久久影院亚洲| 欧美午夜女人视频在线| 久久成人综合视频| 91久久精品网| 国产精品综合| 欧美阿v一级看视频| 亚洲影院在线观看| 亚洲欧美网站| 亚洲精品乱码久久久久久日本蜜臀 | 国产精品一区二区三区久久| 久久亚洲色图| 亚洲砖区区免费| 亚洲人成在线观看网站高清| 久久精品九九| 亚洲影院在线| 亚洲激情婷婷| 国产原创一区二区| 国产精品vvv| 美女国产一区| 久久成人精品| 这里只有精品丝袜| 亚洲黄色成人| 免费高清在线一区| 久久久国产91| 香蕉久久a毛片| 亚洲最新色图| 亚洲片在线观看| 亚洲第一黄色网| 国产中文一区二区三区| 国产精品素人视频| 国产精品s色| 欧美亚洲第一区| 欧美日韩在线大尺度| 欧美激情综合色| 女仆av观看一区| 免费在线国产精品| 久久在线免费| 你懂的亚洲视频| 欧美国产日韩精品免费观看| 麻豆精品在线播放| 鲁大师成人一区二区三区| 久久久久久久欧美精品| 久久经典综合| 久久久久久一区二区| 久久久噜噜噜久噜久久| 久久久久一区二区| 美女精品视频一区| 你懂的网址国产 欧美| 欧美高清视频一区| 欧美乱大交xxxxx| 欧美日韩在线播放一区二区| 国产精品播放| 国产精品亚发布| 国产亚洲精品资源在线26u| 国产一区高清视频| 亚洲国产经典视频| 99视频精品在线| 亚洲欧美另类在线观看| 欧美中文在线免费| 蜜臀av一级做a爰片久久| 欧美成人免费视频| 亚洲麻豆一区| 香蕉成人伊视频在线观看| 久久爱www久久做| 蜜月aⅴ免费一区二区三区 | 欧美一区免费视频| 久久久99免费视频| 欧美激情a∨在线视频播放| 欧美日韩一卡| 国产一区二区三区在线免费观看 | 最新热久久免费视频| 一本色道久久88亚洲综合88| 亚洲欧美在线网| 乱中年女人伦av一区二区| 亚洲激情成人网| 午夜精品久久久久久99热| 蜜桃av噜噜一区二区三区| 欧美性jizz18性欧美| 国产一区二三区| 一本一道久久综合狠狠老精东影业 | 亚洲人成网站777色婷婷| 亚洲午夜黄色| 免费黄网站欧美| 一区二区三区欧美日韩| 久久久久综合一区二区三区| 欧美日本免费| 黄色国产精品| 亚洲一区二区三区四区中文| 久久综合中文| 国产精品99久久99久久久二8 | 欧美日韩在线视频首页| 国内精品久久久久影院 日本资源| 日韩视频免费| 久久综合久久久久88| 这里只有精品丝袜| 欧美成人激情视频| 黄色工厂这里只有精品| 亚洲欧洲av一区二区三区久久| 亚洲国产导航| 久久久久久久久岛国免费| 国产精品日韩在线一区|