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

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>
            国产精品你懂的| 黑人中文字幕一区二区三区| 亚洲美洲欧洲综合国产一区| 亚洲韩国日本中文字幕| 欧美黄色免费网站| 亚洲一区二区三区四区五区黄| 一区二区日韩欧美| 国产欧美一区二区三区视频| 久久久久九九九九| 欧美成人a∨高清免费观看| 亚洲精品中文字| 一本一本久久| 国产一区二区黄色| 亚洲黄色在线看| 国产精品视频99| 免费久久99精品国产| 欧美精品 国产精品| 香蕉久久精品日日躁夜夜躁| 久久精品中文字幕一区| av成人老司机| 欧美伊人久久久久久午夜久久久久 | 久久久久久免费| 美国十次了思思久久精品导航| 一本色道久久加勒比88综合| 性做久久久久久免费观看欧美| 在线观看亚洲一区| 中文精品视频一区二区在线观看| 国产一区视频观看| 一本色道88久久加勒比精品| 在线成人性视频| 中国日韩欧美久久久久久久久| 在线欧美小视频| 午夜久久福利| 亚洲视频一区二区在线观看| 久久久欧美一区二区| 午夜精品国产更新| 欧美精品在线免费| 久久在精品线影院精品国产| 欧美视频四区| 亚洲黄页视频免费观看| 国模私拍视频一区| 亚洲午夜一级| 一区二区免费在线播放| 浪潮色综合久久天堂| 欧美在线综合视频| 欧美日韩在线大尺度| 亚洲国产成人精品女人久久久| 国产一区二区按摩在线观看| 99国产精品久久| 亚洲精品一区二区三区蜜桃久| 欧美一区在线视频| 欧美亚洲免费电影| 国产精品成人观看视频免费| 亚洲国产一成人久久精品| 在线日本成人| 久久综合九色综合欧美就去吻| 久久精品国产96久久久香蕉| 国产精品素人视频| 亚洲一级黄色片| 亚洲女爱视频在线| 欧美午夜美女看片| 中文国产亚洲喷潮| 亚洲女人天堂成人av在线| 欧美色欧美亚洲另类二区| 亚洲狼人精品一区二区三区| 日韩一级黄色av| 欧美日韩极品在线观看一区| 亚洲精品国产精品乱码不99按摩 | 国产女主播视频一区二区| 一区二区国产日产| 小黄鸭视频精品导航| 国产精品午夜电影| 欧美一区二区视频网站| 久久综合给合久久狠狠狠97色69| 韩日精品中文字幕| 裸体女人亚洲精品一区| 亚洲国产美女精品久久久久∴| 亚洲欧洲一区二区三区在线观看| 欧美精品成人91久久久久久久| 亚洲人成高清| 亚洲综合社区| 国产亚洲欧美日韩一区二区| 久久久久久久一区| 亚洲日本中文字幕免费在线不卡| 亚洲乱码精品一二三四区日韩在线| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲每日在线| 欧美视频日韩视频| 欧美一级在线视频| 欧美大片一区| 亚洲欧美激情诱惑| 1000部精品久久久久久久久| 欧美精品一区二区三区高清aⅴ| 一区二区三区黄色| 久久免费的精品国产v∧| 亚洲精品日日夜夜| 国产精品亚洲综合色区韩国| 久久中文字幕一区| 亚洲最新色图| 欧美高清视频一区二区| 亚洲一区在线免费| 亚洲国产精品成人久久综合一区| 欧美日韩国产探花| 久久久久99| 一区二区三区欧美视频| 女同一区二区| 欧美亚洲免费电影| 一本色道久久综合狠狠躁篇怎么玩| 国产精品国产三级国产普通话蜜臀| 欧美在线日韩| 亚洲深爱激情| 亚洲福利视频一区二区| 久久经典综合| 亚洲中字黄色| 日韩视频一区二区三区| 黑人巨大精品欧美一区二区| 欧美视频一区| 欧美极品在线观看| 狂野欧美一区| 久久精品视频免费| 香蕉成人伊视频在线观看| 亚洲精品小视频| 亚洲第一区中文99精品| 久久先锋资源| 久久国产直播| 欧美亚洲一区二区在线| 中文日韩在线| 一区二区三区精品久久久| 亚洲国产影院| 亚洲国产高清高潮精品美女| 国产美女精品| 国产欧美精品国产国产专区| 欧美日韩一二三四五区| 欧美日韩另类视频| 欧美噜噜久久久xxx| 美女露胸一区二区三区| 麻豆久久精品| 欧美成年人视频网站| 欧美11—12娇小xxxx| 快播亚洲色图| 欧美大色视频| 欧美成人免费在线观看| 欧美高清视频| 欧美韩日一区二区| 欧美精品综合| 国产精品第一区| 国产欧美视频在线观看| 国产视频一区三区| 国产一区二区三区四区在线观看| 国产精品欧美一区二区三区奶水 | 欧美在线视频播放| 欧美影片第一页| 久久精品人人做人人综合| 久久久亚洲一区| 欧美电影电视剧在线观看| 欧美激情综合网| 国产精品www| 国产日韩欧美精品在线| 在线成人av| 亚洲最黄网站| 欧美亚洲一区二区在线观看| 久久久久国产精品一区三寸| 美玉足脚交一区二区三区图片| 欧美国产视频日韩| 日韩一区二区精品| 欧美一级视频精品观看| 久久女同互慰一区二区三区| 欧美激情亚洲综合一区| 国产精品久久久久免费a∨| 国产一区二区剧情av在线| 1000精品久久久久久久久| 9久草视频在线视频精品| 欧美一区二区视频97| 欧美风情在线观看| 亚洲视屏在线播放| 久久久91精品国产一区二区三区| 欧美二区在线| 国产一区二区福利| 日韩亚洲欧美在线观看| 欧美在线日韩精品| 亚洲激情亚洲| 欧美一区高清| 欧美三级日韩三级国产三级| 激情欧美丁香| 亚洲欧美中文日韩v在线观看| 欧美1区3d| 午夜亚洲福利| 欧美午夜电影在线| 亚洲国产精品美女| 久久久777| 亚洲一区二区三区四区视频| 美女黄色成人网| 国产欧美婷婷中文| 亚洲午夜久久久| 欧美激情精品久久久久久黑人 | 久久亚洲综合色| 国产老肥熟一区二区三区| 亚洲精品一区二| 美女啪啪无遮挡免费久久网站| 亚洲视频一区二区免费在线观看|