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

永遠也不完美的程序

不斷學習,不斷實踐,不斷的重構……

常用鏈接

統計

積分與排名

好友鏈接

最新評論

正確理解shadowmap的實現方式

首先確定陰影的最基本原理:
陰影是以光源作為攝像機(叫作Camera_light),光照方向作為攝像機的look的方向,然后把這個攝像機看到的場景物渲染到紋理,這個紋理就叫shadowmap。
在這里我把場景的攝像機叫Camera_scene
在渲染場景的時候,接收shadowmap的物體根據自身的坐標計算出對應的shadowmap的紋理坐標已經把shadowmap貼上去。

然后shadowmap都面臨很多的問題,例如分辨率差,模糊等,解決這些問題有很多種算法,如PSM,CSM等。無論是何種算法,最核心的問題就是要解決shadowmap的攝像機參數。

在nvidia的sdk和很多引擎的代碼中,都有一個叫casterAABB的東西,可能很多人一開始寫shadowmap的時候不太理解這個是干什么用的。
casterAABB是指:以當前場景看到的所有接收shadowmap物體的總AABB與Camera_scene的view空間所轉換的AABB的交集。
這個casterAABB的作用是計算Camera_light的攝像機參數,使shadowmap的分辨率達到最清楚。

下面是計算的代碼:
    ISceneManager* pScene = ENGINE_INST->GetSceneMgr();

    //首先取得當前pScene的frustum,然后轉成世界坐標的AABB
    AABBBox3Df frustumInViewAABB;
    GetAABBFromProjectMatrix(frustumInViewAABB, pScene->GetCamera()->GetProjectionMatrix());
    
    AABBBox3Df shadowArea = m_casterAABB;
    m_casterAABB.Intersection(shadowArea, frustumInViewAABB);

    Vector3Df centerPos = shadowArea.GetCenter();
    Matrix4f matInvView;
    
    pScene->GetCamera()->GetViewMatrix().GetInverse(matInvView);
    Vector3Df vecLookAt;
    matInvView.TransformCoord(centerPos, vecLookAt);     //這個時候centerPos是world空間的坐標
    m_pCamera->SetLookAt(vecLookAt);
    m_pCamera->SetPosition(vecLookAt - m_directionLight * m_fDisLightToTarget);
    m_pCamera->BuildViewMatrix();

    const Matrix4f& cameraLightView = m_pCamera->GetViewMatrix();

    Matrix4f matCameraToLight = matInvView * cameraLightView;
    matCameraToLight.TransformBox(shadowArea);
    f32 fWidth = shadowArea.MaxEdge.x - shadowArea.MinEdge.x;
    f32 fheight = shadowArea.MaxEdge.y - shadowArea.MinEdge.y;
    f32 fDis = shadowArea.MaxEdge.z - shadowArea.MinEdge.z;

    matCameraToLight.TransformBox(m_casterAABB);

    m_pCamera->SetViewport(m_casterAABB.MinEdge.z, shadowArea.MaxEdge.z, AIR::PI / 4, fWidth, fheight, false);
接下來就是shadowmap的最常規做法了,渲染到紋理,設置渲染狀態等,這里就不再介紹了。






posted on 2015-06-10 20:44 狂爛球 閱讀(3008) 評論(1)  編輯 收藏 引用 所屬分類: 圖形編程

評論

# re: 正確理解shadowmap的實現方式 2015-06-14 18:31 irons

請問一個物體在地圖上,它的陰影咋實現的呢?
使用你說的陰影紋理?
根據光照(攝像機)為方向,進行渲染場景(包含物體?)渲染到陰影紋理?
最后再根據真正的攝像機,再渲染陰影?
意思要實現陰影的話,要分多個步渲染哇?  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            免费观看成人www动漫视频| 欧美久久99| 美女主播一区| 老司机精品视频网站| 久久嫩草精品久久久久| 欧美在线视频全部完| 亚洲欧美日韩在线一区| 校园春色国产精品| 老司机免费视频一区二区| 久久人人九九| 欧美日韩亚洲国产一区| 国产精品国产三级国产aⅴ浪潮| 国产精品一卡二| 亚洲国产成人av好男人在线观看| 亚洲综合色激情五月| 欧美激情一区在线| 亚洲一区二区免费| 欧美一区二区高清在线观看| 欧美日韩国产91| 亚洲国产日韩欧美一区二区三区| 一区二区三区四区五区精品| 欧美mv日韩mv国产网站app| 99综合精品| 欧美精品久久一区二区| 国产亚洲欧美一级| 亚洲视频一区二区免费在线观看| 久久久久久成人| 久久精品91久久香蕉加勒比| 欧美日韩福利视频| 99视频精品全国免费| 91久久久久久久久| 久久国产视频网站| 国产精品国产三级国产aⅴ浪潮| 欧美日韩亚洲另类| 99国产一区二区三精品乱码| 欧美国产精品中文字幕| 欧美成人精品在线视频| 一区二区三区精品在线 | 国产午夜精品全部视频在线播放 | 欧美一区=区| 国产精品欧美风情| 亚洲欧美成人一区二区三区| 99精品欧美一区二区三区| 欧美二区在线| 一本色道久久88综合日韩精品| 亚洲精品免费电影| 国产精品美女久久久| 久久综合久久综合这里只有精品 | 久久免费一区| 国产精品久久久久毛片大屁完整版 | 蜜桃av一区| 一本久久综合| 久久精品国产欧美激情| 亚洲欧洲免费视频| 欧美一区91| 性欧美1819性猛交| 欧美绝品在线观看成人午夜影视| 亚洲图色在线| 欧美成人一区二区三区片免费| 亚洲视频成人| 欧美精品三区| 亚洲欧洲日产国产综合网| 国产精品福利久久久| 亚洲黄一区二区| 激情欧美一区二区三区| 欧美大片在线观看一区二区| 欧美性大战xxxxx久久久| 亚洲福利视频三区| 亚洲国产精品第一区二区| 欧美伊久线香蕉线新在线| 一本色道久久综合狠狠躁篇的优点 | 久久综合中文色婷婷| 国产精品久久久久久久久| 日韩一区二区电影网| 亚洲一二三四区| 欧美日韩免费网站| 在线亚洲电影| 久久精品一本| 亚洲精品久久久久久久久久久久| 久久亚洲风情| 亚洲另类春色国产| 久久国内精品视频| 伊人成人在线视频| 欧美护士18xxxxhd| 99伊人成综合| 欧美成人性网| 亚洲午夜精品久久久久久app| 国产精品日韩欧美一区| 欧美精品久久久久久| 亚洲精品日韩激情在线电影| 欧美色图一区二区三区| 欧美在线高清视频| 亚洲大片av| 欧美亚洲视频| 99热免费精品| 影音先锋亚洲视频| 国产一区二区三区不卡在线观看| 欧美大秀在线观看| 久久久久久久97| 欧美一区二区福利在线| 亚洲第一精品久久忘忧草社区| 欧美无砖砖区免费| 久久久久久一区二区| 亚欧成人在线| 欧美一区二区在线| 亚洲欧美国产精品va在线观看 | 午夜精品区一区二区三| 99re6热只有精品免费观看| 在线日本成人| 亚洲国产成人精品女人久久久| 国产一区免费视频| 国产综合自拍| 亚洲电影专区| 99国产精品久久久久老师 | 亚洲成人在线免费| 亚洲黄网站在线观看| 亚洲精品乱码久久久久久黑人| 亚洲国产乱码最新视频| 亚洲免费观看在线观看| 夜夜嗨av一区二区三区网页| 中文久久精品| 久久久亚洲一区| 99精品国产福利在线观看免费| 午夜日韩福利| 欧美日韩一区二区在线观看| 国产亚洲一区二区三区在线播放| 亚洲第一页在线| 欧美一区二区视频在线| 免费成人av在线看| 亚洲人成毛片在线播放女女| 午夜在线视频观看日韩17c| 久久综合一区二区三区| 国产精品男人爽免费视频1| 亚洲国产精品va在线看黑人| 亚洲视频成人| 欧美va亚洲va日韩∨a综合色| 一区二区三区精品久久久| 亚洲欧美日韩精品久久奇米色影视| 一区二区三区高清不卡| 久久久九九九九| 亚洲色在线视频| 欧美日韩精品一本二本三本| 亚洲二区在线| 欧美激情亚洲激情| 久久久综合网站| 国产一区二区三区免费在线观看| 亚洲午夜激情网站| 99视频在线观看一区三区| 欧美成人高清视频| 99国内精品久久久久久久软件| 欧美中文字幕视频| 一色屋精品视频免费看| 久久av红桃一区二区小说| 午夜久久资源| 亚洲国产综合在线看不卡| 欧美成人第一页| 欧美成人激情视频免费观看| 最新国产乱人伦偷精品免费网站| 欧美激情中文字幕乱码免费| 乱中年女人伦av一区二区| 亚洲国产日韩欧美在线动漫| 欧美激情视频网站| 欧美视频不卡| 欧美中文字幕不卡| 欧美mv日韩mv亚洲| 欧美影院在线播放| 欧美日韩国产成人在线观看| 午夜国产一区| 亚洲精品在线免费观看视频| 欧美久久久久久蜜桃| 久久精品视频在线| 亚洲一级片在线看| 午夜天堂精品久久久久| 樱花yy私人影院亚洲| 一区二区三区四区国产| 国语自产精品视频在线看一大j8 | 蜜臀久久久99精品久久久久久 | 136国产福利精品导航网址应用 | 欧美黄色大片网站| 国产欧美日韩中文字幕在线| 亚洲日本视频| 一区二区国产日产| 免费欧美在线| 免费成人av在线| 韩国精品主播一区二区在线观看| 亚洲午夜在线观看| 亚洲综合色激情五月| 欧美午夜女人视频在线| 亚洲黄色片网站| 亚洲精品影视在线观看| 久久人91精品久久久久久不卡| 久久精品综合一区| 国产人妖伪娘一区91| 欧美在线网址| 欧美电影免费观看大全| 亚洲免费av电影| 国产精品第2页| 亚洲欧美国产不卡| 欧美激情1区2区3区| 亚洲一区二区三区精品动漫|