• <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>
            隨筆 - 11  文章 - 0  trackbacks - 0
            <2010年3月>
            28123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            常用鏈接

            留言簿

            隨筆分類

            隨筆檔案

            相冊

            關注

            網站

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            光照就是通過計算讓面對以及靠近光源的三角形看起來比較亮。正對光源的三角形可以反射出比較強的光線,而比較靠近光源的物體,光線的衰減程度會比較低。
            在Fixed Function Pipeline中,光照都是在模型的頂點上計算的,再通過內插把光照結果散播到三角形內部,這種以頂點為單位來計算的方法叫做per-vertex lighting。如果使用Shader就可以把光照計算放到像素中去做,這樣可以得到比較精確的光照結果,這種方法叫per-pixel lighting。
            Normal,即法線,用來指定模型上每個頂點所面對的方向。
            在Fixed Function Pipeline中支持四種不同的光源:方向光(Directional Light)、電光源(Point Light)、聚光燈(Spot Light)、環境光(Ambient Light)。
            方向光(Directional Light),只有方向和顏色屬性的光源,長用來模擬太陽。不具有位置屬性,無法計算出光源隨距離的衰減值,被定義成與距離無關。
            點光源(point Light),具有位置和顏色的屬性,在空間中占據一個點,并向四面八方散射。光線照到某個物體后,反射光的強度與物體表面的法線和入射光線的夾角有關。光源隨著到物體的距離增大而衰減。
            聚光燈(Spot Light),具有方向、位置、顏色這些屬性,還需要指定光柱圓錐的發射角度。落在光柱中偏外側的物體所得到的光線強度會比較弱,完全落在光柱外的物體接受不到光線。光線會隨著距離的增大而衰減,反射強度會隨著光線入射角的改變而改變。
            環境光(Ambient Light),沒有位置,沒有方向,僅僅提供一個基本的光源強度。環境光用來模擬通過反射得到的間接光源,否則有些物體可能會因為太暗而看不到。
            在3D繪圖中通過反射所得到的光源稱為Global Illumination;不是通過反射,而是直接照射的光源稱為Direct Illumination。Ambient Light是解決Global Illumination的最簡單方法。Directional、Point、Spot照射得到的光是Direct Illumination。
            Directional、Point、Spot照射到得物體表面會吸收到部分光線,也會反射部分光線。物體表面的紋理就是用來設置物體反射光線的能力。
            物體表面的反射光有兩種。一種是Diffuse Light,它會均等的向四面八方反射出同樣強度的光線;另一種是Specular Light,它是物體表面直接反射的光線。反射光線是有方向的,如果鏡頭越接近反射后的光線路徑,那么就可以看到越強的Specular Light。
            一個相當重要而且很簡單的觀念,光源強度是可以累加的。可以先計算第1個光源的結果,再把第2個、第3個、...... 、第n個光源的強度累加上去。


            光線衰減公式:1/(a*1 + b*d +c*d*d)
            // vDistance用來計算光線隨距離衰減公式中分母的(1, d, d*d)
            Vector4 vDistance(1.0f, light_distance, light_distance*light_distance);
            // g_vLightAttenuation里記錄了計算衰減公式中分母的(a,b,c)
            g_vLightAttenuation.Set(1.0f. 1.0f, 0.0f);
            // Vector3Dot(vDistance, g_vLightAttenuation) = (1,d,d*d) dot (a,b,c) = (a*1 + b*d + c*d*d)
            Vector4 vAttenuation = Vector3Dot(vDistance, g_vLightAttenuation);
            ----摘自《3D繪圖程序設計》
            posted on 2010-03-01 22:51 郭小帥 閱讀(581) 評論(0)  編輯 收藏 引用 所屬分類: Fixed Function Pipeline
            精品国产91久久久久久久a| 久久青青草原精品国产不卡| 色婷婷噜噜久久国产精品12p| 理论片午午伦夜理片久久 | 亚洲婷婷国产精品电影人久久| 欧美久久综合九色综合| 伊人久久久AV老熟妇色| 无码人妻精品一区二区三区久久久 | 国产精品99久久不卡| 久久最新免费视频| 久久亚洲国产成人精品性色| 久久这里只有精品久久| 欧美亚洲国产精品久久| 久久99国产精品久久久| 久久人人爽人人人人爽AV | 久久久久久久久波多野高潮| 久久精品国产精品国产精品污| 国产成人综合久久精品红| 久久99精品国产99久久| 中文字幕人妻色偷偷久久| 国产精品久久久久久久午夜片 | 精品久久久久久国产免费了| 久久国产免费观看精品3| 久久久噜噜噜久久中文字幕色伊伊| 久久99热只有频精品8| 久久福利资源国产精品999| 99精品伊人久久久大香线蕉| 久久久久亚洲Av无码专| 久久久亚洲AV波多野结衣| 亚洲日本va午夜中文字幕久久 | 久久国产免费观看精品3| 亚洲国产精品无码久久久久久曰| 好久久免费视频高清| 国产成年无码久久久久毛片| 亚洲午夜久久久久妓女影院| 久久频这里精品99香蕉久| 亚洲人成无码www久久久| 人妻系列无码专区久久五月天| 久久精品成人免费网站| 久久久青草久久久青草| 久久精品一区二区三区不卡|