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

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>
            亚洲午夜在线观看视频在线| 国产精品麻豆成人av电影艾秋| 亚洲国产另类久久精品| 久久国产一区二区| 久久久久国产精品一区二区| 久久久亚洲成人| 美日韩丰满少妇在线观看| 久久久久久久久久久久久久一区 | 欧美日韩国产在线一区| 欧美日韩激情小视频| 欧美日韩在线视频首页| 国产精品国产成人国产三级| 国产精品青草久久| 99精品欧美一区二区三区 | 亚洲在线视频免费观看| 午夜一区不卡| 免费久久99精品国产| 欧美成人精品在线观看| 亚洲精品一区中文| 欧美在线视频一区二区三区| 嫩草国产精品入口| 国产精品视频九色porn| 亚洲福利精品| 亚欧成人在线| 亚洲精品一区中文| 久久久夜夜夜| 国产伦理一区| 99热免费精品在线观看| 久久久久免费| 亚洲作爱视频| 老司机凹凸av亚洲导航| 国产精品你懂得| 夜夜狂射影院欧美极品| 久久―日本道色综合久久| 一本色道久久| 欧美精品xxxxbbbb| 亚洲国产欧美日韩精品| 久久久久久久综合日本| 正在播放亚洲一区| 欧美高清视频一区| 亚洲第一精品久久忘忧草社区| 亚洲摸下面视频| 亚洲美女毛片| 欧美承认网站| 亚洲国产精品www| 久久男人资源视频| 欧美一区二区三区的| 国产精品久久久久久久久久免费 | 国产精品高清在线观看| 日韩午夜激情av| 亚洲福利免费| 久久这里只有精品视频首页| 国产日韩综合| 欧美一级淫片aaaaaaa视频| 99精品视频免费观看| 欧美日韩高清在线一区| 99视频有精品| 亚洲精品国产系列| 欧美日韩亚洲一区二区三区| 日韩视频中文字幕| 亚洲高清不卡在线| 老**午夜毛片一区二区三区| 伊人久久男人天堂| 女女同性精品视频| 免费观看亚洲视频大全| 亚洲激情在线观看视频免费| 欧美大片专区| 欧美女同在线视频| 亚洲专区一二三| 欧美一区二区观看视频| 中文网丁香综合网| 国产欧美日韩精品在线| 久久精品中文| 久久综合伊人77777| 亚洲人成网在线播放| 最新亚洲一区| 国产精品久久久久久久久借妻| 午夜精品999| 久久精品视频免费播放| 亚洲国内欧美| 亚洲视频电影图片偷拍一区| 国产精品免费视频xxxx| 久久精品国内一区二区三区| 久久久亚洲国产美女国产盗摄| 在线日韩av片| 99视频精品免费观看| 国产欧美日韩综合| 欧美二区不卡| 欧美系列亚洲系列| 久久频这里精品99香蕉| 欧美激情2020午夜免费观看| 亚洲免费在线观看视频| 久久久国产亚洲精品| 在线综合亚洲| 久久久91精品国产一区二区精品| 亚洲欧洲午夜| 亚洲一区二区视频| 91久久久久| 午夜在线视频一区二区区别| 亚洲黄色毛片| 亚洲免费视频网站| 亚洲精品国产无天堂网2021| 亚洲视频专区在线| 亚洲国产日韩欧美在线图片| 亚洲一区二区三区四区五区午夜| 91久久久一线二线三线品牌| 亚洲一区观看| 在线午夜精品| 欧美xart系列在线观看| 久久深夜福利| 国产日韩欧美制服另类| 999在线观看精品免费不卡网站| 狠狠色狠狠色综合日日小说| 夜夜嗨av一区二区三区网页| 亚洲韩日在线| 久久在线免费| 久久久久久香蕉网| 国产乱子伦一区二区三区国色天香| 亚洲成人直播| 伊人久久亚洲热| 小黄鸭精品aⅴ导航网站入口| 一本久久综合| 欧美精品videossex性护士| 麻豆久久婷婷| 一区二区在线视频播放| 欧美制服第一页| 久久精品一本| 国内一区二区三区| 性视频1819p久久| 欧美专区亚洲专区| 国产午夜精品全部视频在线播放| 宅男噜噜噜66一区二区| 亚洲尤物在线| 欧美午夜激情小视频| 99视频超级精品| 国产一区二区三区直播精品电影| 一本一本久久a久久精品综合妖精| 亚洲精品乱码视频| 欧美国产日本在线| 亚洲精品乱码久久久久| 亚洲精品久久久久久久久久久久| 欧美不卡视频一区| 亚洲精品在线免费| 亚洲欧美区自拍先锋| 国产精品视频999| 香蕉免费一区二区三区在线观看| 久久精品国产精品 | 欧美精品免费在线| 亚洲国产va精品久久久不卡综合| 91久久精品日日躁夜夜躁欧美| 欧美 日韩 国产 一区| 亚洲精品日韩精品| 性久久久久久久久| 极品尤物久久久av免费看| 久久久久天天天天| 亚洲精品国产拍免费91在线| 亚洲视频大全| 国产一区二区三区在线观看免费视频| 欧美一级视频精品观看| 欧美电影免费网站| 亚洲综合成人在线| 在线精品国产成人综合| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲精品在线观看视频| 欧美在线高清| 亚洲肉体裸体xxxx137| 国产精品国产自产拍高清av| 欧美一区亚洲二区| 亚洲电影毛片| 欧美伊人久久| 亚洲日韩视频| 国产一区白浆| 欧美日韩一卡| 久久夜色精品一区| 亚洲性夜色噜噜噜7777| 久久亚洲一区二区| 亚洲午夜精品视频| 亚洲黄色有码视频| 国产一区二区三区在线观看免费视频| 欧美成年人视频网站| 亚洲综合国产| 亚洲精品老司机| 玖玖玖国产精品| 亚洲欧美精品在线| 日韩午夜在线视频| 在线欧美日韩精品| 国产一区二区三区在线观看视频 | 亚洲国产精品va在线观看黑人| 亚洲午夜久久久| 亚洲福利国产| 激情久久综合| 国产精品自拍一区| 国产精品成人观看视频国产奇米| 久久夜色精品亚洲噜噜国产mv| 亚洲在线第一页| 一本色道久久综合亚洲精品不 | 欧美一站二站| 亚洲一区二区三区精品动漫| 亚洲人体1000| 亚洲欧洲日本国产|