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

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>
            亚洲在线成人精品| 亚洲国产精品一区二区第一页| 亚洲欧美综合国产精品一区| 国产精品亚洲а∨天堂免在线| 欧美日韩精品在线| 免费欧美高清视频| 蜜臀av一级做a爰片久久| 久久夜色精品国产噜噜av| 久久久一本精品99久久精品66| 久久久福利视频| 久久精品一二三| 欧美二区在线观看| 欧美韩国日本一区| 国产精品国产馆在线真实露脸| 欧美日韩999| 国产一区二区三区免费在线观看| 国产亚洲精品成人av久久ww| 最新日韩在线视频| 亚洲图色在线| 欧美激情女人20p| 99精品国产热久久91蜜凸| 香蕉成人伊视频在线观看| 久久视频在线视频| 国产精品九色蝌蚪自拍| 国产日韩欧美精品一区| 亚洲每日在线| 免费影视亚洲| 久久精品一二三| 国产一区91| 久久av在线看| 午夜精品电影| 国产精品乱子乱xxxx| 亚洲人成免费| 亚洲高清不卡在线观看| 久热精品视频| 午夜视频精品| 国产精品a久久久久| 一本在线高清不卡dvd| 亚洲精品孕妇| 欧美午夜精品伦理| 亚洲一区二区三区四区中文 | 国产日韩三区| 久久精品一区二区国产| 99成人精品| 欧美黄色视屏| 亚洲精品视频免费观看| 亚洲老司机av| 国产精品免费视频观看| 亚洲自拍啪啪| 久久精品一区二区三区不卡牛牛| 亚洲丁香婷深爱综合| 亚洲精品国产无天堂网2021| 欧美视频日韩视频在线观看| 午夜欧美视频| 欧美成人精品不卡视频在线观看| 99国产欧美久久久精品| 久久精品午夜| 亚洲摸下面视频| 免费久久精品视频| 久久久中精品2020中文| 欧美亚洲不卡| 日韩一区二区电影网| 亚洲欧洲在线一区| 久久午夜国产精品| 美女脱光内衣内裤视频久久网站| 欧美日韩精品一二三区| 欧美成人伊人久久综合网| 国产精品一二三视频| 一区二区欧美精品| 久久久久久一区二区三区| 先锋影院在线亚洲| 欧美日韩亚洲另类| 亚洲国产精品黑人久久久| 亚洲国产精品电影在线观看| 久久国产一二区| 久久久中精品2020中文| 韩国av一区二区三区在线观看 | 国产免费亚洲高清| 亚洲日韩欧美一区二区在线| 在线免费不卡视频| 欧美激情中文字幕乱码免费| 欧美日韩国产成人高清视频| 欧美国产视频在线| 亚洲精品欧美在线| 欧美片在线播放| 一区二区三区视频在线看| 欧美尤物巨大精品爽| 极品裸体白嫩激情啪啪国产精品| 欧美一区二区在线观看| 麻豆精品传媒视频| 日韩一级成人av| 国产精品久久久久高潮| 欧美在线一级视频| 亚洲缚视频在线观看| 欧美一区精品| 夜夜躁日日躁狠狠久久88av| 国产亚洲网站| 欧美日韩国产首页| 亚洲欧美不卡| 亚洲视频免费| 亚洲三级电影全部在线观看高清| 亚洲永久免费精品| 亚洲国产精品嫩草影院| 国产欧美日韩一区二区三区在线| 久久精品视频在线播放| 亚洲精品视频免费在线观看| 国产亚洲精品一区二555| 欧美福利一区二区| 欧美激情aaaa| 欧美中文在线免费| 久久精品人人| 午夜精品国产更新| 亚洲无限乱码一二三四麻| 免费精品99久久国产综合精品| 午夜视频久久久| 正在播放亚洲一区| 亚洲欧美国产高清| 午夜精品久久久久久久蜜桃app | 久久精品最新地址| 久久精品91久久久久久再现| 久久久久国产成人精品亚洲午夜| 久久久精品一区| 亚洲国产成人高清精品| 99热在线精品观看| 亚洲欧美日韩综合一区| 亚洲欧洲av一区二区三区久久| 一区二区欧美国产| 亚洲欧美在线aaa| 欧美一级大片在线观看| 免费久久99精品国产自| 国产精品v日韩精品| 国产一区二区三区直播精品电影| 在线不卡视频| 亚洲欧美美女| 欧美激情久久久久久| 亚洲欧美日韩高清| 欧美日韩国产精品专区| 国产欧美婷婷中文| 亚洲视频在线观看视频| 久久综合亚洲社区| 亚洲欧美成人在线| 欧美日韩成人综合在线一区二区| 国产婷婷97碰碰久久人人蜜臀| 久久乐国产精品| 国产精品视频久久| 亚洲三级电影在线观看| 牛牛精品成人免费视频| 久久精品国产免费| 黑人操亚洲美女惩罚| 欧美在线观看视频在线| 日韩视频在线观看国产| 欧美日韩精品免费观看视频完整| 亚洲国产精品电影| 美国成人直播| 久久亚洲综合色一区二区三区| 国内精品久久久久影院色| 欧美一区网站| 久久一区激情| 一区二区日韩免费看| av成人福利| 国产日韩av高清| 久久男人资源视频| 久久久av水蜜桃| 亚洲自拍三区| 亚洲黄页一区| 久久婷婷丁香| 最近中文字幕日韩精品 | 亚洲黄色免费电影| 久久人体大胆视频| 亚洲欧美综合网| 欧美精品色一区二区三区| 久久久人成影片一区二区三区| 乱中年女人伦av一区二区| 欧美影院在线| 国产精品国产三级国产普通话蜜臀| 久久尤物视频| 国内视频一区| 久久精品欧洲| 久久精品人人| 免费观看成人| 国产精品婷婷| 亚洲主播在线| 亚洲国产精品一区| 一本色道久久综合精品竹菊 | 久久国产精品高清| 国产亚洲激情| 欧美在线免费观看视频| 怡红院av一区二区三区| 久久精品国产成人| 亚洲二区视频在线| 欧美不卡视频一区发布| 国产精品二区在线观看| 亚洲精品中文字| 欧美激情国产日韩精品一区18| 久久久久久亚洲综合影院红桃| 欧美日韩视频不卡| 亚洲黄色在线看| 巨乳诱惑日韩免费av| 亚洲第一福利社区| 农夫在线精品视频免费观看|