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

實時陰影繪制技術(shù)研究

C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
  48 Posts :: 20 Stories :: 57 Comments :: 0 Trackbacks
英文原文:http://www.gamedev.net/reference/articles/article2193.asp

在我的前邊文章中有這樣一篇文章,是轉(zhuǎn)載gameres的文章,一直也沒有好好看看。昨天偶然間看到,仔細(xì)研究了一下,讀了一下代碼。

四遍的繪制過程如下:
  • pass 1:從光源看過去,繪制場景深度,寫入最后的COLOR,這個COLOR最終被繪制到g_pShadowSurf這個RenderTarget,深度模板表面保存在g_pShadowDepth(這個暫時不知道怎么用)
  • Pass 2:
  1. 不計算光照,利用VS繪制從視點看過去的場景z值深度,輸出一個POSITION和一個TEXTURE0,其中TEXTURE0保存了從光源到該點的深度(使用了紋理矩陣來處理從視點可見的點即可得到),此紋理輸出給PS使用。
  2. 在PS中,為每一個紋理g_pShadowMap上的像素點,構(gòu)造它周圍的3*3的表示的紋理坐標(biāo)數(shù)組,并遍歷該數(shù)組取得紋理顏色值(也就是從光源看到的場景深度值),同從視點看到的點的對應(yīng)深度值,逐一進(jìn)行比較。使得周圍8個點中看到光源的點越多,最后輸出的Color的值就越大,最小為0.1,最大為1。
  3. 該pass的顏色輸出到紋理g_pSceneSurf,深度模板表面保存在g_pNewDetphSurf中。
  • Pass 3:
  1. 利用高斯函數(shù)pass2中得到的shadow mask進(jìn)行模糊,這一遍做水平模糊
  2. //
    // Gaussian functions(高斯函數(shù))
    //
    float GetGaussianDistribution( float x, float y, float rho ) {
    ??? float g = 1.0f / sqrt( 2.0f * 3.141592654f * rho * rho );
    ??? return g * exp( -(x * x + y * y) / (2 * rho * rho) );
    }

    void GetGaussianOffsets( bool bHorizontal, D3DXVECTOR2 vViewportTexelSize,
    ??? ??? ??? ??? ??? ??? ?D3DXVECTOR2* vSampleOffsets, float* fSampleWeights ) {
    ??? // Get the center texel offset and weight
    ??? fSampleWeights[0] = 1.0f * GetGaussianDistribution( 0, 0, 2.0f );
    ??? vSampleOffsets[0] = D3DXVECTOR2( 0.0f, 0.0f );
    ???
    ??? // Get the offsets and weights for the remaining taps
    ??? if( bHorizontal ) {
    ??? ??? for( int i = 1; i < 15; i += 2 ) {
    ??? ??? ??? vSampleOffsets[i + 0] = D3DXVECTOR2(? i * vViewportTexelSize.x, 0.0f );
    ??? ??? ??? vSampleOffsets[i + 1] = D3DXVECTOR2( -i * vViewportTexelSize.x, 0.0f );

    ??? ??? ??? fSampleWeights[i + 0] = 2.0f * GetGaussianDistribution( float(i + 0), 0.0f, 3.0f );
    ??? ??? ??? fSampleWeights[i + 1] = 2.0f * GetGaussianDistribution( float(i + 1), 0.0f, 3.0f );
    ??? ??? }
    ??? }

    ??? else {
    ??? ??? for( int i = 1; i < 15; i += 2 ) {
    ??? ??? ??? vSampleOffsets[i + 0] = D3DXVECTOR2( 0.0f,? i * vViewportTexelSize.y );
    ??? ??? ??? vSampleOffsets[i + 1] = D3DXVECTOR2( 0.0f, -i * vViewportTexelSize.y );
    ??? ??? ???
    ??? ??? ??? fSampleWeights[i + 0] = 2.0f * GetGaussianDistribution( 0.0f, float(i + 0), 3.0f );
    ??? ??? ??? fSampleWeights[i + 1] = 2.0f * GetGaussianDistribution( 0.0f, float(i + 1), 3.0f );
    ??? ??? }
    ??? }
    }
    具體的數(shù)學(xué)公式我沒有查,大概看不懂,還望高手指點。
  • Pass4:這二遍做垂直模糊。
  • Pass 5:繪制場景,逐像素的計算光照,并將模糊后的shadow mask信息和聚光燈貼圖應(yīng)用到場景中。

posted on 2006-06-02 14:02 苦行僧 閱讀(3895) 評論(1)  編輯 收藏 引用 所屬分類: shadow

Feedback

# re: 基于shadow map的軟陰影生成過程祥解 2006-12-05 16:46 wu_chung_tang
利用高斯函數(shù)pass2中得到的shadow mask進(jìn)行模糊
you can do this in PS not in C++ code, can be fast  回復(fù)  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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毛片| 宅男噜噜噜66一区二区66| 亚洲欧美国产高清| 欧美高清在线一区二区| 一区二区三区日韩精品视频| 久久精品一区四区| 一区二区高清| 极品av少妇一区二区| 亚洲人成在线播放| 香蕉精品999视频一区二区| 久久综合九色九九| 一本到12不卡视频在线dvd| 久久成人精品无人区| 欧美精品色网| 在线观看欧美| 欧美亚洲三区| 99ri日韩精品视频| 免费亚洲婷婷| 狠狠色噜噜狠狠狠狠色吗综合| 在线亚洲美日韩| 欧美韩国在线| 久久久美女艺术照精彩视频福利播放| 欧美人与性动交α欧美精品济南到| 国产亚洲精品成人av久久ww| 国产精品99久久久久久白浆小说 | 欧美3dxxxxhd| 亚洲天堂成人在线视频| 欧美理论电影在线播放| 揄拍成人国产精品视频| 久久精品国产综合精品| 一区二区日本视频| 欧美日韩国产小视频| 91久久精品一区二区别| 久久久精品tv| 亚洲欧美另类综合偷拍| 欧美性开放视频| 一区二区三区日韩在线观看| 亚洲电影专区| 欧美freesex8一10精品| 1769国产精品| 欧美黄在线观看| 老**午夜毛片一区二区三区| 在线播放不卡| 美女视频黄a大片欧美| 欧美一级在线亚洲天堂| 国产日产精品一区二区三区四区的观看方式 | 美女黄毛**国产精品啪啪| 国产综合色产| 久久综合狠狠综合久久综合88| 欧美在线免费视屏| 激情综合亚洲| 欧美chengren| 欧美激情综合五月色丁香小说| 亚洲美女区一区| 99视频在线观看一区三区| 欧美日韩成人精品| 亚洲欧美日韩爽爽影院| 亚洲欧美日韩一区二区在线 | 欧美日韩网址| 午夜精品视频在线| 欧美www视频| 国产日本欧美一区二区三区| 久久精品30| 久热国产精品视频| 一区二区av在线| 亚洲欧美综合国产精品一区| 国产亚洲一区精品| 欧美国产亚洲视频| 国产精品九九| 免费亚洲电影在线| 欧美色中文字幕| 久久久久成人精品| 欧美激情视频在线免费观看 欧美视频免费一 | 91久久精品国产91久久性色tv| 你懂的国产精品| 亚洲一区二区三区免费观看| 欧美一区国产在线| 一区二区不卡在线视频 午夜欧美不卡在 | 久久亚洲精品视频| 一本久道综合久久精品| 亚洲欧美日本国产专区一区| 国产日韩欧美成人| 91久久精品国产91久久性色tv| 国产精品视频九色porn| 欧美激情精品久久久久久大尺度| 国产精品进线69影院| 欧美二区不卡| 国产嫩草一区二区三区在线观看| 欧美69视频| 国产原创一区二区| 亚洲图片欧美日产| 亚洲美女毛片| 久久久久se| 午夜精品美女久久久久av福利| 欧美第一黄网免费网站| 久久综合九色九九| 国产亚洲一区二区三区在线播放 | 亚洲一区二区三| 亚洲人成艺术| 久久野战av| 久久久www成人免费精品| 欧美视频网址| 亚洲精品在线电影| 亚洲国产欧美一区二区三区丁香婷| 亚洲午夜一区二区| 亚洲视频在线观看一区| 欧美成人日本| 久久久久久久久久久久久9999| 欧美日韩三级| 亚洲黄色毛片| 亚洲日本欧美天堂| 久热re这里精品视频在线6| 久久久久久久久综合| 国产精品视频一区二区三区| 亚洲美女免费视频| 99这里有精品| 欧美日韩三级在线| 亚洲美女电影在线| 一区二区日韩欧美| 欧美日韩国产区| 亚洲欧洲一区二区三区在线观看| 亚洲成人资源网| 美女视频黄 久久| 亚洲高清一区二| 亚洲精品视频免费| 欧美精品电影在线| 亚洲日本va午夜在线影院| 日韩亚洲欧美中文三级| 欧美日韩久久| 亚洲手机成人高清视频| 亚洲欧美精品在线观看| 国产麻豆视频精品| 久久国产夜色精品鲁鲁99| 麻豆成人在线观看| 亚洲美洲欧洲综合国产一区| 欧美人牲a欧美精品| 一区二区三区高清在线| 欧美一区二区三区在线观看视频 | 久久免费视频观看| 亚洲国产精品ⅴa在线观看 | 久久裸体艺术| 亚洲国产日韩美| 欧美精品在线观看播放| 中文精品视频| 久久久亚洲人| 99www免费人成精品| 国产精品电影在线观看| 欧美一区二区三区四区在线| 欧美成人dvd在线视频| 一区二区三区日韩欧美精品| 国产性猛交xxxx免费看久久| 久久亚洲一区| 亚洲一区综合| 欧美激情国产日韩| 欧美在线日韩| 亚洲美女中出| 韩日欧美一区| 国产精品久久久久久久久久免费看| 性色一区二区| 亚洲精品综合精品自拍| 久久人人97超碰人人澡爱香蕉| 亚洲人在线视频| 国产色产综合产在线视频| 免费欧美电影| 欧美一区二区视频在线观看2020 | 99re亚洲国产精品| 国产自产v一区二区三区c| 欧美激情导航| 久久精品一二三| 亚洲一区二区三区激情| 亚洲第一二三四五区| 久久免费的精品国产v∧| 日韩午夜中文字幕| 麻豆成人精品| 久久er精品视频| 亚洲一线二线三线久久久| 亚洲国产日韩一区| 伊人久久大香线| 国产一区二区主播在线| 国产精品嫩草久久久久| 欧美日韩国产麻豆|