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

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 閱讀(771) 評論(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>
            国产精品视频一区二区三区 | 亚洲激情国产精品| 久久精品国产免费| 欧美一区二区三区免费观看| 国产亚洲亚洲| 欧美寡妇偷汉性猛交| 免费欧美日韩| 在线亚洲美日韩| 中国成人黄色视屏| 国产午夜精品久久| 欧美 日韩 国产 一区| 欧美 日韩 国产一区二区在线视频 | 欧美精品久久久久久久久久| 一区二区三区视频观看| 亚洲一区观看| 狠狠色狠狠色综合日日小说| 亚洲成人资源| 久久国产精品72免费观看| 久久精品夜色噜噜亚洲a∨| 亚洲国产精品毛片| 99日韩精品| 国产综合香蕉五月婷在线| 欧美大片91| 国产精品推荐精品| 欧美成人精品一区二区| 国产精品成av人在线视午夜片| 久久精品一区二区三区不卡牛牛 | 欧美在线视频观看| 99视频在线精品国自产拍免费观看| 99re6这里只有精品| 国产一区视频在线观看免费| 亚洲国产乱码最新视频| 国产欧美亚洲一区| 亚洲免费观看| 在线看国产日韩| 亚洲一区二区三区在线播放| 亚洲三级免费观看| 欧美一区二区在线看| 亚洲天堂av在线免费观看| 久久亚洲不卡| 欧美一区二区视频观看视频| 欧美精品免费播放| 蜜桃伊人久久| 国产欧美日韩在线播放| 亚洲精品国久久99热| 亚洲福利精品| 欧美一区激情| 欧美一级艳片视频免费观看| 欧美日本国产视频| 亚洲高清视频中文字幕| 一区免费观看| 亚洲欧美日韩中文播放| 一本久久青青| 免费在线观看精品| 免费久久久一本精品久久区| 国产亚洲精品成人av久久ww| 亚洲一区二区黄色| 午夜精品久久久久久久99水蜜桃 | 久久综合亚州| 久久夜色精品亚洲噜噜国产mv | 蜜桃视频一区| 免费成人在线观看视频| 一区二区三区自拍| 久久久久久久波多野高潮日日| 久久狠狠亚洲综合| 国产午夜一区二区三区| 新狼窝色av性久久久久久| 欧美一区二区三区四区视频| 国产精品综合| 欧美一区午夜视频在线观看| 久久精品国产欧美亚洲人人爽| 国产日韩欧美一区| 亚洲欧美一区二区激情| 久久久91精品国产| 精品不卡视频| 免费成人毛片| 亚洲精品精选| 香蕉久久精品日日躁夜夜躁| 国产老肥熟一区二区三区| 先锋影音久久| 男人的天堂亚洲在线| 亚洲裸体俱乐部裸体舞表演av| 欧美精品一区二区精品网| 99国产精品久久久久久久| 亚洲欧美国产另类| 国产人成一区二区三区影院| 久久精品国产亚洲一区二区| 欧美高清视频www夜色资源网| 亚洲老板91色精品久久| 国产精品乱人伦一区二区| 欧美一区成人| 欧美高清在线视频观看不卡| 亚洲视频在线观看免费| 国产三级欧美三级| 牛牛国产精品| 亚洲欧美激情精品一区二区| 麻豆久久精品| 亚洲视频观看| 影音先锋中文字幕一区| 欧美日韩国产在线一区| 欧美在线视频一区| 亚洲青色在线| 久久人人看视频| 99精品视频免费观看视频| 国产欧美一区二区视频| 免费成人你懂的| 午夜精品久久久久久久蜜桃app | 午夜精品久久久久99热蜜桃导演| 韩日午夜在线资源一区二区| 欧美精品亚洲精品| 欧美影院在线| 一本色道综合亚洲| 欧美成人免费在线| 久久精品国产一区二区三| 亚洲精品在线一区二区| 狠狠色伊人亚洲综合成人| 欧美日韩在线观看一区二区三区 | 午夜精品久久久久久久久久久| 亚洲高清色综合| 久久男人av资源网站| 亚洲欧美日韩在线一区| 亚洲日韩欧美视频| 精品电影在线观看| 国产精品最新自拍| 欧美视频在线观看 亚洲欧| 另类图片综合电影| 久久精品99| 欧美亚洲综合在线| 亚洲私人影院| 一区二区福利| 亚洲毛片网站| 亚洲片区在线| 亚洲欧洲久久| 亚洲国产经典视频| 欧美刺激性大交免费视频 | 99精品国产福利在线观看免费| 一区二区在线观看av| 国产亚洲制服色| 国产无一区二区| 国产亚洲第一区| 国产性天天综合网| 国产一区二区视频在线观看 | 欧美久久九九| 欧美久久在线| 欧美日韩第一区日日骚| 欧美日本一区二区高清播放视频| 欧美成人一区在线| 欧美黑人在线播放| 欧美精品成人一区二区在线观看 | 一区二区三区欧美日韩| 亚洲视频一区二区免费在线观看| 亚洲伦理在线免费看| 99精品国产在热久久| 在线亚洲国产精品网站| 亚洲一区二区三区在线视频| 亚洲在线电影| 欧美在线播放高清精品| 久久久免费观看视频| 欧美99久久| 欧美日韩在线视频一区| 国产精品二区在线| 国产在线精品自拍| 亚洲黄色毛片| 一区二区三区精密机械公司| 亚洲影视综合| 久久天堂av综合合色| 欧美大片免费观看| 亚洲最新合集| 久久爱www.| 欧美不卡视频| 国产精品男人爽免费视频1| 国产在线不卡精品| 亚洲精品精选| 亚洲男人的天堂在线观看| 久久九九热re6这里有精品 | 亚洲愉拍自拍另类高清精品| 久久精品国产久精国产思思| 欧美激情导航| 亚洲在线电影| 欧美国产日韩视频| 国产视频精品网| 亚洲久久视频| 久久国产日本精品| 亚洲精品国产精品国自产观看浪潮 | 亚洲欧洲精品成人久久奇米网 | 伊人狠狠色j香婷婷综合| 99re热这里只有精品视频| 久久成人一区二区| 亚洲国产一区在线观看| 亚洲欧美日韩在线播放| 欧美黄色影院| 国产在线不卡精品| 亚洲欧美国产精品桃花| 亚洲福利视频一区| 欧美一区三区二区在线观看| 欧美日韩精品综合| 亚洲日本成人| 久久综合电影| 亚洲欧美中文另类| 欧美吻胸吃奶大尺度电影|