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

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>
            一本色道久久综合狠狠躁篇怎么玩 | 欧美一区二区在线看| 国产伦精品一区二区三区高清版| 中文在线一区| 亚洲男女自偷自拍图片另类| 国产伦精品免费视频| 久久综合亚州| 欧美成人在线网站| 宅男在线国产精品| 香蕉久久国产| 亚洲国产精品成人精品| 亚洲人成在线观看| 欧美日韩一级黄| 久久激五月天综合精品| 久久婷婷丁香| 这里只有精品视频| 欧美一区二区三区久久精品茉莉花| 影音欧美亚洲| 亚洲理伦在线| 狠狠色狠狠色综合人人| 亚洲欧洲精品一区二区三区| 国产精品成人国产乱一区| 久久免费99精品久久久久久| 欧美精品三级| 久久久久综合网| 欧美男人的天堂| 老鸭窝91久久精品色噜噜导演| 欧美另类极品videosbest最新版本| 欧美亚洲色图校园春色| 免费久久久一本精品久久区| 亚洲欧美在线视频观看| 美女主播一区| 久久精品毛片| 欧美偷拍另类| 欧美激情一区二区三级高清视频| 国产精品久久网站| 亚洲国产91| 精品999成人| 亚洲综合好骚| 亚洲一二三区精品| 欧美黑人在线播放| 久久综合伊人77777蜜臀| 国产精品第一区| 亚洲国产精品专区久久| 在线观看亚洲精品视频| 性色一区二区| 午夜精品视频在线| 欧美日韩亚洲一区二区三区四区| 欧美刺激性大交免费视频 | 欧美亚洲自偷自偷| 亚洲一区免费在线观看| 欧美激情女人20p| 欧美成人福利视频| 一区二区三区在线视频播放| 亚洲欧美日韩在线播放| 亚洲欧美日韩综合国产aⅴ| 欧美日本一区二区高清播放视频| 欧美v国产在线一区二区三区| 国产一区二区三区久久悠悠色av| 亚洲一区二区三区在线看| 亚洲视频导航| 欧美视频在线看| 99精品视频免费| 亚洲一区二区三区在线| 国产精品白丝av嫩草影院| av72成人在线| 亚洲综合欧美日韩| 国产精品一区二区三区四区| 亚洲一区视频在线| 亚洲无亚洲人成网站77777| 亚洲综合色自拍一区| 一区二区高清| 欧美日韩一卡二卡| 一区二区三区欧美成人| 午夜精彩国产免费不卡不顿大片| 欧美日韩一区在线| 中日韩午夜理伦电影免费| 亚洲免费综合| 国产一区二区成人| 久久男人av资源网站| 欧美激情中文字幕乱码免费| 亚洲久久一区| 国产精品美女在线| 欧美一区二区三区久久精品茉莉花 | 国产精品一卡二| 欧美一级久久久久久久大片| 免费久久精品视频| 99国产一区| 国产欧美日韩三级| 老色鬼久久亚洲一区二区| 亚洲精品乱码久久久久久蜜桃麻豆| 宅男精品导航| 国产主播一区二区三区| 欧美激情在线免费观看| 亚洲一区二区三区免费观看| 老牛影视一区二区三区| 一本色道久久综合精品竹菊| 国产欧美欧美| 欧美人在线视频| 欧美怡红院视频一区二区三区| 欧美激情91| 欧美一区激情| 日韩亚洲精品视频| 国产一区白浆| 欧美午夜视频在线| 久久综合久久综合久久| 亚洲亚洲精品三区日韩精品在线视频| 久久久久久有精品国产| 一个色综合导航| 激情欧美亚洲| 国产精品美腿一区在线看| 久久婷婷av| 欧美一级视频| 在线午夜精品| 亚洲人在线视频| 麻豆成人综合网| 欧美一区二区在线观看| 日韩午夜在线| 亚洲国产精品成人| 国产一区二区三区在线观看免费视频 | 亚洲国产婷婷香蕉久久久久久99| 国产精品毛片在线| 欧美精品二区| 麻豆国产精品一区二区三区| 午夜精品久久久久| 一区二区三区免费观看| 最近中文字幕mv在线一区二区三区四区| 欧美一区二区视频免费观看| 亚洲一区黄色| 亚洲视频精品| 一区二区久久| 一本色道婷婷久久欧美| 91久久亚洲| 亚洲欧洲精品一区二区精品久久久 | 男人的天堂亚洲| 久久久999精品| 久久久国产一区二区| 亚洲欧美日韩天堂一区二区| 亚洲图片在线观看| 一区二区三区欧美视频| 亚洲最新在线| 一区二区高清视频| 一区二区三区日韩| 一区二区激情视频| 中日韩美女免费视频网址在线观看 | 久久精精品视频| 久久久精品一品道一区| 欧美与黑人午夜性猛交久久久| 欧美一级淫片aaaaaaa视频| 午夜精品久久久| 久久精品国产精品亚洲精品| 久久精彩视频| 女人色偷偷aa久久天堂| 欧美电影在线观看| 欧美日本精品在线| 国产精品久久久久秋霞鲁丝 | 久久综合狠狠综合久久综青草 | 一区二区三区日韩欧美| 亚洲欧美国产视频| 久久久久se| 欧美成人黑人xx视频免费观看| 欧美电影在线免费观看网站| 欧美日韩精品免费在线观看视频| 欧美色视频日本高清在线观看| 国产精品高潮呻吟久久av无限| 国产精品系列在线| 一区在线影院| 一区二区三区日韩精品视频| 午夜视频一区在线观看| 久久综合网色—综合色88| 亚洲国产精品久久久| 在线亚洲高清视频| 久久精品视频免费| 欧美日韩高清免费| 国产欧美91| 亚洲精选久久| 久久久精品五月天| 亚洲理伦在线| 久久精品综合网| 欧美午夜精品久久久久久孕妇| 狠狠久久五月精品中文字幕| 日韩视频在线观看一区二区| 久久动漫亚洲| 亚洲伦伦在线| 久热精品视频在线观看一区| 欧美亚洲成人网| 亚洲激情中文1区| 久久国产精品一区二区三区| 亚洲国产专区校园欧美| 亚欧美中日韩视频| 欧美日韩综合网| 亚洲激情专区| 久久精品一本久久99精品| 亚洲免费播放| 免费欧美视频| 红桃视频国产一区| 亚洲欧美在线免费| 一本色道久久88综合日韩精品| 久久综合激情| 精品999成人|