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

Code Knight

Programming is so cool
隨筆 - 52, 文章 - 0, 評(píng)論 - 14, 引用 - 0
數(shù)據(jù)加載中……

圖形學(xué)學(xué)習(xí)筆記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第三個(gè)參數(shù)的作用了,用于給程序中賦值的索引

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:世界坐標(biāo)系

             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); // 法線與視線平行的點(diǎn)認(rèn)為是標(biāo)遠(yuǎn),給予黑色溝邊

}

 

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傳進(jìn)來(lái)的,POSITION:頂點(diǎn)坐標(biāo),NORMAL法線,去看看hlsl的語(yǔ)意定義

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

 [U3]m下標(biāo)gls,為材料的光澤度

 [U4]得到的是vsout出來(lái)的值

 [U5]texture_unit中得到,順序根據(jù)定義的順序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) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 圖形學(xué)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久亚洲精品视频| 一本在线高清不卡dvd| 午夜在线电影亚洲一区| 亚洲丝袜av一区| 国产精品老牛| 欧美制服丝袜第一页| 久久久国产亚洲精品| 亚洲黄色影院| 一本综合精品| 国产一区二区三区四区三区四| 另类春色校园亚洲| 欧美激情综合网| 午夜日韩福利| 久久成人精品| 日韩性生活视频| 羞羞漫画18久久大片| **网站欧美大片在线观看| 亚洲精品1区2区| 国产精品r级在线| 久久在线91| 欧美日韩 国产精品| 欧美在线一区二区三区| 欧美国产一区二区在线观看| 亚洲欧美日韩国产一区| 久久午夜精品一区二区| 亚洲一二三区在线观看| 久久久久国产精品www| 亚洲视频在线观看网站| 久久精品国产999大香线蕉| 亚洲无线视频| 免费亚洲电影| 久久精品国产999大香线蕉| 欧美经典一区二区| 久久综合久久久| 国产精品午夜在线观看| 最新亚洲电影| 狠色狠色综合久久| 亚洲综合导航| 亚洲一二三级电影| 欧美精品久久久久a| 久久人91精品久久久久久不卡| 欧美日韩岛国| 亚洲国产另类久久久精品极度| 国产亚洲福利社区一区| 一区二区三区你懂的| 日韩一区二区久久| 美女日韩欧美| 免费在线观看日韩欧美| 麻豆成人综合网| 国产精品一区在线播放| 宅男精品视频| 亚洲男人av电影| 欧美视频中文一区二区三区在线观看 | 欧美男人的天堂| 欧美成人精品h版在线观看| 国产一区二区久久精品| 亚洲欧美激情在线视频| 午夜久久久久| 国产精品美女久久久| 一区二区三区久久久| 在线亚洲一区二区| 欧美日韩直播| 夜夜爽av福利精品导航| 中文亚洲字幕| 国产精品高潮视频| 亚洲尤物在线| 久久久av毛片精品| 国内精品久久久久影院色| 欧美一级久久久久久久大片| 久久久久久久波多野高潮日日| 国产丝袜一区二区| 久久久91精品国产一区二区精品| 久久三级福利| 亚洲国产欧美国产综合一区| 欧美成人免费观看| 日韩天堂av| 香蕉久久一区二区不卡无毒影院| 国产伦一区二区三区色一情| 欧美一级淫片aaaaaaa视频| 久久综合激情| 亚洲精品影视在线观看| 欧美婷婷久久| 欧美在线视频导航| 欧美国产精品中文字幕| 一本大道久久精品懂色aⅴ | 欧美.www| 亚洲视频自拍偷拍| 免费视频最近日韩| 亚洲深夜av| 国外成人在线视频| 欧美成人免费网站| 亚洲一区二区三区精品在线观看| 久久久久久穴| 日韩视频不卡| 国内精品久久久久伊人av| 欧美成人免费在线视频| 亚洲视频图片小说| 猫咪成人在线观看| 亚洲午夜极品| 亚洲黑丝一区二区| 国产女精品视频网站免费| 麻豆免费精品视频| 校园激情久久| 亚洲狼人综合| 欧美aⅴ一区二区三区视频| 亚洲欧美电影院| 亚洲精品一区二区三区在线观看| 国产精品夜夜嗨| 欧美精品久久一区| 久久夜色精品国产欧美乱| 亚洲私人影院在线观看| 亚洲高清免费| 久久亚洲电影| 欧美专区福利在线| 亚洲一区二区三区激情| 91久久久在线| 一区二区三区自拍| 国产精品有限公司| 欧美日韩一区二区三区在线看| 久久一二三区| 久久久99免费视频| 亚洲图片在线| 一区二区精品| 日韩视频在线一区| 亚洲国产精品激情在线观看| 麻豆av一区二区三区| 欧美在线观看天堂一区二区三区| 一区二区三区久久久| 99re66热这里只有精品4| 亚洲风情亚aⅴ在线发布| 国产视频精品va久久久久久| 国产精品视频成人| 国产精品久久久久久久久久尿| 欧美日韩性视频在线| 欧美激情精品久久久久久蜜臀| 美女视频黄a大片欧美| 麻豆精品一区二区av白丝在线| 久久99伊人| 久久一区国产| 麻豆精品视频| 欧美黑人国产人伦爽爽爽| 欧美a级一区二区| 免费成人在线观看视频| 欧美波霸影院| 欧美精品亚洲| 欧美偷拍另类| 国产精品毛片一区二区三区| 国产精品美女久久福利网站| 国产美女精品视频免费观看| 国产欧美日韩一区| 国一区二区在线观看| 在线观看亚洲专区| 亚洲日本激情| 亚洲一区二区三区乱码aⅴ| 亚洲欧美激情一区二区| 欧美一进一出视频| 久久亚洲一区二区三区四区| 嫩草影视亚洲| 日韩视频二区| 亚洲欧美日韩国产综合| 久久一区二区三区超碰国产精品| 欧美第一黄色网| 欧美性做爰毛片| 国产亚洲一级高清| 亚洲精品社区| 欧美一区午夜视频在线观看| 久热精品在线| 亚洲美女精品久久| 亚洲欧美日韩中文播放| 久久综合一区| 欧美午夜一区二区福利视频| 黄色成人精品网站| 亚洲免费高清| 久久久久久久久久久成人| 欧美国产精品劲爆| 亚洲男人的天堂在线| 免费精品视频| 国产欧美精品一区二区三区介绍| 亚洲观看高清完整版在线观看| 亚洲小说欧美另类婷婷| 开元免费观看欧美电视剧网站| 亚洲日韩成人| 久久久久久九九九九| 欧美亚洲第一区| 亚洲国产综合在线看不卡| 午夜免费日韩视频| 亚洲国产精品小视频| 午夜精品一区二区三区四区 | 欧美3dxxxxhd| 国自产拍偷拍福利精品免费一| 一区二区成人精品| 欧美v亚洲v综合ⅴ国产v| 午夜国产精品影院在线观看| 欧美日韩成人在线播放| 在线日韩视频| 久久久久久自在自线| 亚洲一区在线观看视频| 欧美日韩国产首页| 亚洲激情另类| 麻豆精品传媒视频|