PROJECT ASURA R&D Light Propagation Volumes
PROJECT ASURA R&D Light Propagation Volumes
ĤȡäƤä֤ɤȻפΤǡˡˤĤƤƤޤ
DirectXɤͤϡNVIDIASDK˼㤬ΤǸƤ
ޤ르ꥺγפǤʲΤ褦ʥƥåפˤʤޤ
Step.1 Reflective Shadow Map
Step.2 Radiance Injection
Step.3 Radiance Propagation
Step.4 Scene Lighting
ޤǽStep.1
Reflective Shadow Mapޤ뤳ȤϡGХåեʿ١ɶ֤ΰ֡ˡ٥ȥ롤«ˤʤΤ礷Ȥ̵Ǥflux(«ˤηˡǤReflective Shadow Mapsʸ3.2Ϥ˵Ҥޤ
ֺǽˡƥԥ˱äͤ줿«ɬפ롣uniformʿԸˤĤƤϡȤʤ롣uniformФƤϡ«ΩγѤ뤿ݥå;ǸפȽƤޤ
ʤΤǡֳڤʼʿԸȤƥ饤Ȥ谷ŬꤷƤФ褤Ǥ礦ȤƼ갷ϡLight Propagation VolumesAppendix Bˤ餷åɤܤäƤޤ
half GetTexelLum( const in RSMTexel texel )
{
return Luminance( texel.vColor ) * max( 0.h, dot( texel.vNormal, g_lightDir.xyz ) );
}
luminanceϵͤʤΤǡ餯Τ褦ʷˤʤȻפޤ
half Luminance( const float4 color )
{
return 0.299 * color.r + 0.587 * color.g + 0.114 * color.b;
}
ˡʸˤƤ褦ˡΤޤޤβ(Virtual Point Light:VPL)ȤƻȤäƤޤȽŤΤǡץƽ٤ڸƤޤ
ɤAppendix B˺ܤäƤΤǡͤˤФ褤Ǥ礦
äƤ뤳Ȥ4ƥʬץơGetTexelLum()åɤˤͤǤ뤤ƥꤷޤˡե륿ݤޤե륿γݤϡ4ƥФƺǤ뤤ȷꤵ줿ȡ륻Ȥ2ΥΥ3̤ξ˿١ˡûΥ3̤ǤΤĤ뤫ȤƤޤơǸƤޤơ줿ͤϤȤǤ
Appendix BΥɤȤ狼褦ˡåɰȤΤǡ餫ᥰåɤۤƤɬפޤåɥȡʬȤޤХåɤϹۤǤΤʤǤ礦
³Step.2Ǥ
ץReflective Shadow MapΥƥȤƳǼƤݻƤޤ
ΥƥåפǤϡƥȤƳǼ줿Ĵ´ؿǰ̤ơܥ塼ƥؤȳǼƤޤ
ޤˡ٥ȥ뤫2ޤǤSHФޤȤϤηSHStep.1ǺGХåե«ФRGBʬݤ碌СĴ¤ǶͤޤޤȤϤRGBʬȤ̤ΥƥȤƵͤ¸Ƥޤ
ΤޤޤǤϼʾˤ륢ƥեȤȯƤޤޤ뤿ˡǽäȤ餹ȤƤޤ
ϡStep.3Ǥ
̤̾ꡤǥãƤޤפܤФSHͤûƤФǤ
λAppendix C. Propagation scheme˺ܤäƤޤ
ǸˡStep.4
饤ƥԤޤ饤ƥϤäƥץã줿ǥܥ塼ͤȡSHѤơ饤ƥԤޤ
ʤ櫓ǡΤϤ狼פȻפޤ
ꤢʤΤǡޤǾ֤Ƥ
ȡޤɽӼϥåĥάΤǡʸȤƤ
----------------------------------------
6.2 Geometry-aware light injection and shifting
ޤФʶֶΤˡʾ뤿˳VPL pΥǥγƤñͤեȤɬפޤʿ9ȡˡ桹ϡˡ˸ǥ¤ˤƺǥȾʬǤͤ˸ǥեȤ뤳ȤޤäơǾͤΥ顼Ƴ졤¿ξˤƼʾޤܺ٤ʼˤĤƤAppendix CȤƤǤ⡤ñͤǥեȤ뤳Ȥϴ˼ʾ˾ޤʤǥ֥ǥˤϽʬǤϤޤ
6.3 Anisotropic upsampling of radiance volume
֥5.5˽Ҥ٤Τ褦˶Ū˶줿ǥSHΥȥ饤˥֤ϺǽŪʥǥܥ塼δ֡˾ޤʤʾ֥ǥȤä褦ʽʥƥեȤ⤷ޤʿ9ȡˡФơʤȤ3Ĥβǽˡ¸ߤޤ
ǽ1Ĥϥͥƥ֤ʥץǡʾ褦ˡǡեåǥեȤñͤ줿VPLΩĤΤǤΥեåȤ1ĤΥĹΤǡ椨ˤƶ֤줿֥Ȥˤư̤Ȥʤޤäơ桹ϤΥץϻѤޤ
2ܤΥץϡñͥơˤ뤤"ǥ"[DSDD07]ȸƤФХå饤ɤä뤳ȤΩޤϡȿФ˸ȥľǡǥγƤ⤤"ȥ饹"Ĥ褦ˤޤäơȥ饤˥֤뤳ȤϽˤʤޤˡμreflective shadow map2褹ɬפȤȤǤǽˡ̥̾ȿͤ줿饤ƥˡ2˥ͥƥ֤ʥ饤ȤФ̥뤳ȤǤϥƥ˥åʣäޤñͥơΤãơθǡΥͥƥ֤ʥǥˤĤƷ֤ޤޤ̩ȿиΥȥξˤơְäưŤ줿Τϡ⤦ĤʤǤɤäƤΤǡ桹ϤΥץȤޤ
Ǹˡ桹ϵǥܥ塼˰¸åץץˡȯޤˡμʥǥˡ˱äƥȥС뤳Ȥȡǥǥʬ뤳Ȥˤäƴְä֤Ф뤳ȤǤ
桹SHФ濴κʬѤޤʿ10ȡˡn˸濴κʬϥǥθۤ뤳ȤǤ
ʼ
äơºݤΥǥĥǥʬӤ뤳ȤˤꡤˤĤơΥȥ饤˥֤ǥγƤΥƻϤޤäƤ뤫ɤ뤳ȤǤޤ
9ˤˡη̤ޤ
--------------------------------------
դ
Ƥ4ʾ夿äƤޤޤˤĶȻפޤ
Light Propagation Volumes in CryEngine3 Ķ--
Light Propagation VolumesĶ³Ǥ
ꤢʤΤǡޤǾ֤Ƥ
ȡޤɽӼϥåĥάΤǡʸȤƤ
------------------------------------------------------
6. Improvements and Optimizations
動的にデータグリッドを印刷する方法Ƥ줿ˡ,ޤ˾ޤʤ֥ǥäƤޤʤȤȡŪʶΤǤʿ8ȡˡ
ޤ˥餬ưƤְŪʤĤȯޤʤȤȡ桹ϥ˷ӤĤץѤ뤿ǤŪʤĤȾRSMβ٤¤ΤȯޤϤξϤǾܺ٤˵졤ˡƤޤ
˰ۤʤ륳ӥ͡ȡ¾ΥƥΥȤθߴϡƱͤˤΥ֥ץǤܺ٤˵ޤ
6.1 Solution Stabilization
ŪޤѲˤưˡ¿θʧޤ˽פʲǡĤǽŪʥǥγƤˤơ˴طΤǤȤ¤äƤޤäơ桹ϰפʥ顿ľܥ饤ƥѲĤΤǤפǤ¿ˡϤ٤뤿˻Ȥޤ
2D texel snapping for RSM movements
ľܸξˤƥ餬ư벼ǥ饹饤٤äޤΥץϡľʥɥޥåפФƤ褯ΤƤΤǡ餬ưƤ̷֡⤷ʤ饹饤ޤäơRSMΰư˰¸ʤե̷Τʤɽ⤿餷ޤ
High redundancy of secondary light sources
¿Ѥ뤳ȤˤäƸȥΥ֥Ȥư֤ΤĤȤ¾ͤʥǥѲ뤳ȤǤޤ줬̣ΤϡѲδ֥뤴Ȥθã뤿ˤRSMˤ륵եοϽʬǤȤȤǤ
Smart down-sampling of RSM
ˡϡǥγƤŪ˸夹ǤʤñͥơΥԡɤޤ
One-cell 3D grid snapping for radiance volume movement
ʬʳ餷֤ǡ桹ϥΰưδ̷֡Τʤñͤݻޤ
Τ褦ˡǥγƤˡϡξ֤νפѲδ֤Ǥ֤ȶ֤ˤƥࡼǰꤵݻޤ
-------------------------------------------------
Ķ11³ġ
Ȥꤢ6.3ޤǤλʸȤȤǡĶϽˤ褦Ȼפޤ
6.3ʹߤϳƼɤǤ
ꤢʤΤǡޤǾ֤Ƥ
ȡޤɽӼϥåĥάΤǡʸȤƤ
--------------------------------------------------------------
5.6 Other applications
ǥãñͥѥǽŪ2Ĥη̤ƳФȤǤޤ
ñͥơη̤Ȥƽ2ǥ
ã줿ǥ
γơϥǥեɥ饤ƥȻв줿եȤФƻѤ뤳ȤǤޤ
5.6.1 Light sources
¾ζ̣ץꥱϴã줿ǥñͤ뤳ȤǤץʥ饤ȤΥפФơDzŪ˹ԤȤǤޤSHΥХɿ2ˤäƵ̥֤Τ˶뤳ȤǤΤ[SLOAN08]ζ֤ˤƲϤʲˡɽˤϽʬǤäơǥܥ塼ưŪư饤ȤˤĤƸΨŪʥǥåˤʤޤȤСФŪʲˡɽ뤿ˡ٤ޤϸȾ¤SHؤȥǥƤ뤳Ȥ˴ŤǤΥǥɽΤ狼нʬǤ(Appendix Aȿ6ȡǥܥ塼ؤȲϤ˻ã줿ǥñͤ뤳Ȥˤ̥鱦夫鲼ؤȽˡ̤Υǥեɥ饤ƥ衤ñͤ줿ǥǥǥܥ塼衤֡ǥܥ塼ˤäƳ줿顼ե졼Фƥ顼25%ĶƤ餺饤ȤȾ¡å̩Ψ˰¸ޤǤ, 417Ǥǥñͤȥǥܥ塼XBox360PlayStation3ǥȡ2ms꤫ޤ˵ŤߤΤϡ顼ȾΤΤꥻ֤֤ˤäȯޤʤʤȤȡƤθĤǤˡ桹ϥǥܥ塼ؤȸ褹뤫ʤꤹ뤿θȾͤѤޤͤϥǥܥ塼β٤˰¸ޤڥ顼ȿͤϼΥ֥ץǵҤ褦˼¹Ԥ뤳ȤǤޤ
5.6.2 Glossy reflections
ñͥơθǡǥνγƤĤ褦ˡ̤ΥƥåפǥΥܥ塼ƥפˡˤǽοΥ졼ФLn(x, )ˤĤƼ(5)¤뤳Ȥˤäơġȿͤ줿ؤ˸եxǤΥǥL(x, )뤳Ȥǽˤʤޤäơθ줿˸ĤΥեå뤳ȤǤx鸽ߤΥ٤ı߿ʬŬѤ뤳ȤǤޤ륹ڥ顼ȿͤθϳ˸äȿͤ줿쥤να߿γ٤ľŪ˰¸ޤʿ7ȡˡǾ߿ѤľŪ˥ǥܥ塼ƥζŪʲ٤˰¸ޤ
ȿϡտ魯ӥǥǤΤ˼ޤ
---------------------------------------------------------
Ķ10ؤ³ġ
ꤢʤΤǡޤǾ֤Ƥ
ȡޤɽӼϥåĥάΤǡʸȤƤ
--------------------------------------------------------------
5.5Light Propagation Volume Rendering
ΥơSHܥ塼ƥη̤ǥĥ饤ƥ뤳Ȥ鹽ޤϡ̤Υեɥ顼ˤ褦̾Υѥǥɶ֤Υԥ֤Ѥơܥ塼ƥ㤫ľܥǥեå뤳ȤˤäƤʤޤʤ顤ΤۤΥΥ饤ƥˡˤäƤʤޤ㤨Сǥեɥܥ塼ץߥƥ֤Ȥơǥեɥǥե塼饤ȥ졼ХåեؤȡƤΥƥ뤳ȤˤäƤǤ桹ϥǥեɥ饤ƥץCryEngine3ʣʥ쥤䡼줿ӥȥ饤ƥǥ뤬Ѥ뤿ᡤԤˡȤޤ
ꤷƤΤϡ̾ȤƤ⥳Ȥѥ"Result"֥ץˤ륿ߥơ֥ȡˤǡδ֥ϡɥѤ뤳ȤˤŬΤ˽פǤ
ǡ̤ˤεѤΥѥեޥ˸夵ܥ塼ƥ褹뤿ΥϡɥǽϤ˵ŤȤפǤϡŪ˥ν̤ñˤޤʤȤȥԥ륷ǥȥ饤˥ե륿ߥ졼ɬפʤǤǤϤʤơϡɥ˥åȤѤ3DƥΥ쥤ȤκŬΤˡåΨ˸夷ޤ顤ޤMicrosoft DirectX 10 APIѤƥܥ塼ƥغǽŪʥǥԡ뤳ȤǽǤMicrosoft DirectX 9.0c APIѤƤԲǽǤ
ˡSHɽΤñʥȥ饤˥֤μϡ˾ޤʤ饤ȥ֥ǥǤ㡤άˡ褹뤿ˡΤĤϼΥǵޤ
5.5.1 Deferred lighting
CryEngine3ˤƥǥեɥ饤ƥȤΤǡǥܥ塼ľŪ˥ޥӥȥѥɲäǥǥե塼饤ȥ졼Хåեؤ褵ޤϲ桹ˤΥѥФƱͤ˥ƥץѥȿ٥ХɥƥȤΤ褦ƤѲǽʥǥեɺŬѤ뤳ȤǽˤޤˤϤޤ֥6.4ˤƵ褦ʣʥ쥤䡼줿饤ƥ뤳Ȥǽˤޤ
日付Visual FoxProを検証する方法--------------------------------------------------
Ķ9ؤ³ġ
ꤢʤΤǡޤǾ֤Ƥ
ȡޤɽӼϥåĥάΤǡʸȤƤ
--------------------------------------------------------------
5.4 Propagation
[Kajiya86]ǵҤ줿褦ʥ(1)ץϤĤޤ¿ϼ2ĤΥ롼פؤʬޤեɥ塼ȥХåɥ塼ǤäȤⶦ̤ϥեɤȥХåɤΥ쥤ȥ졼ǤԤΥ롼פϥԥ塼եåǺǤݥԥ顼ǤʤȤȾĹʷʤǥʬ뤫Ǥãơϥեɥ塼Υ롼פ°ޤˡ[KajiyaVonHerren86]Ƥ줿åSHˡȤΤˤͿãΤη˳ȤߤʤȤˤäƿꤹ뤳ȤǤޤܾȤʼݤΤᡤ桹ϤĤSHХɤˤФƤܥǥγƤɽǤޤޤñͥơνƤϾʤȤ̳ơޤϥࡼĤȤȤݾڤƤޤʸˤRavi Ramamoorthiˤϥǥե塼ʣʴĶޥåפФ2ĤΥХɤɬפǤȤȤǤ[RamamoorthiHanrahan01]ˤؤ餺桹SH2ĤΥХɤѤޤ桹ξǤϡФƤܥǥγƤ̥֤ɽ뤿˽ʬǤ
ãơϤĤȿΩޤƥ졼ɽΤϡǥܥ塼Υåɶ֤ˤã1ʬθǤ
¬ƤL(x)ϥxˤδܥǥγƤǤñͥץδ֤äȡ桹ϳVPLΥǥͤΥΰ֤˺ǤᤤȤߤʤΤؤȲûޤVPLΤʳƤñͥץθΤΥǤϤ狼ʤΤǡ桹ϥ֤εΥȥåĹ֤ĥ塼֤ȤƼ갷äɤǤ줿VPLΥǥԳμ¤ˤΥ塼֤¦dzƤޤդƤۤΤϤΥ塼֤̾ʿѤǥγƤĤȤǤ
桹ܤ̤٤Υ塼֤ޤǤδ֡ͥ륮ãޤ4Ǥϡǥãܤ륻뤫ΥФñã졼뤳ȤǤޤ1ĤΥФãƥåפ2ĤΥơΩޤ
̤Ӥܤ륭塼֤ФƤǥʬ뤳ȤˤäƳ̤Ӥ«ޤ
줿ͥͥ륮νͤߤΥ塼֤ΥǥɽؤȲûޤ줬̣Τϡ̤ФͤǥȤȤǤͥ륮γƤϡƤΥ塼֤ФƳãƥåפθ塤ƱޤޤǤɤϡ桹줾츻Ȥʤ륭塼֤ФΩγѤϤäƥǥã֥եȶɽĤ̾ؤȺƳƤ뤿Ǥ
äơnΥ졼Ф륷륻˴ؤ뼰ϼΤ褦˵Ҥ뤳ȤǤޤ
ά
μˤPãǤܤ륻뤫ͥǥᡤߤΥͥǥޤľʻåɤμΥƥ뤫Ƥ줿Ωޤ뤳ȤGPUեɥʤᡤ桹ϥ뤳ȤȤޤ
ã륢르ꥺûɤϤΤ褦ˤʤޤ
for_each cell
for i from direction
incmoing_radiance_dir = get_radiance_over_face(
cell.adjecent_cell[i],
directions[i] )
cell.radiance += incoming_radiance_dir
ǥã르ꥺη㤬5Ǽޤϥǥܥ塼6ʬǡ4Υã졼η̤Ǥܺ٤ʼAppendic Cˤޤ
-----------------------------------------------------
Ķ8³ġ
ꤢʤΤǡޤǾ֤Ƥ
ȡޤɽӼϥåĥάΤǡʸȤƤ
--------------------------------------------------------------
5.3 Injection
ΥơΥǥͿ줿VPLΤޤȤޤ[Christensen08]ˤSHǽǥγƤؤѴãΤؤñͤ뤳ȤǤãΡʤξϤǤ"ǥܥ塼"ȤѸȤƤȤޤˤϥܥ塼ΤƥǡϳƥԥˤƵĴ´ؿˤ줿ǥեɤ¸Ƥޤäơ桹ưŪǡ¤Τ̾ͭǶֶޤ桹ϥݥȥ١ɥ(PBR)("surfels")ޤPBRѸǤϡΥơϥܥ塼ƥؤ¿Ǥ뤳Ȥ鹽ޤ椨SHͱƥơǤʤǥܥ塼ˤǥեɤˤʤޤñͥơˤǥեɤˤʤޤñͥơϤȤơ桹ϥץ줿reflective shadow mapΥƥȤƳǼ줿ΤޤȤޤޤΥơŪϡܥ塼ƥؤȥݥȥ١ɥΤѤSHǥܥ塼ؤȿͤ줿ǥ¸ߤγƤؤñͤ뤳ȤǤPBRμפǴ֤Ϣ³Ǥ桹ϤξˤRSMθ̤Υƥ륵ϳǼΥܥ塼ƥ1ĤΥåɥΥ⾯ʤʤȤȤݾڤƤΤǡǤΤʥȸɬפޤˡ桹ϺǽŪʽͤνŤߤθɬפޤäơñ˲ûŪѥƥåפȤʤޤ
Υ֥ץǤηϡǤפǥǥե塼Х륤ߥ͡ˤĤʣʸǤۤΤ褦ľܸ˴ؤƤΤ¹ԤȤȤդƲΤ¾ΥפˤĤƤηϡƩѴθ뤳ȤƱ褦ʤưפ˼¹Ԥ뤳ȤǽǤ
ˡǤγղŪʰ켡ФƷ֤ȤɬפʺǸΥơǤȤ¤դƲRSMơñͥơ1ФƼ¹ԤޤñͤʣФƶͭ줿Ʊ춦ͭǥܥ塼ؤȼ¹ԤޤϽפǡʤȤȡΣĤΥơŪ㥳ȤǡΥեåϡɥ¿ΰ켡ФưפͿ뤳ȤǤޤ
桹ϡ٤Τ֤ǵ2ɽ2Хɡ4Ĥηοˤ˸Ĵ·Ѥޤʲ˼褦ˡ2ХɵĴ´ؿǶ뤳ȤϡȤǤ뼫Ǥ뤿ǥܥ塼Ǵܥ饤ƥɽ뤿ˤϽʬǤ桹ϳǤΥ饸ƥSHؤȼͱƤ줿̥֤ؤѴޤǽ˲桹ϡΤξSHΥ٥ȥˤäɽ줿ؤVPLˡɸ n = (x, y, z)ˤɽ줿ˡ٥ȥɾޤSH c = ( c0, c1, c2, c3 )¿༰[Sloan08]
ά
ηϤθ塤ַ̥ؤȺޤ̸ФAppendix AǼޤΥ٥ȥޤVPLǤνͤˤäƥ뤵뤳ȤɬפǡϽľܸǿŤ줿IL, ILˤäƾ軻줿٥ɥ顼Asƹθ줿VPLκǽŪʥڥȥη뤿WsνŤߤǤ
ά
ǥե塼եФƳǤζIs̡ʲΤ褦˷ޤ
ά
(ns, l)+̣Τϡ(ns, l)ͤǤʤϰϤ˥פ줿ȤȤǤդߤΤAsIsबθ줿ǤΥ饸ƥɽȤȤǤ
4つのXMLアプリケーション言語は何ですかRSMΥƥ륨ꥢȼͱƤǥܥ塼ॻ륨ꥢޤθ٤Ǥ˽Ҥ٤褦RSMǤϳǼܥ塼ƥΣĤΥƥ⾮ȤȤݾڤƤޤäơ桹Ϣ³Ǥ뤳Ȥˤɬפޤʤ顤ǤνͤŤߤŤɬפޤ
äơǤФƽŤդWsޤǽ˥ȥåRSMˤƥƥΥꥢϲΤ褦˷ޤ
ά
ǡ
SRSMreflective shadow mapˤäʤ줿ꥢǤ
SareϹθ줿ץñͤ줿ФƿľǤǥܥ塼ڤ줿ꥢˤäʤ줿ꥢƤǤ
treflective shadow mapΥƥοǤ
ǡ桹RSMSRSMʤ줿Τ˥ǥܥ塼ʤ줿Sarea˰פΤޤϴñʷ˽ޤ
1ĤΥΥꥢϥǥܥ塼ڤ줿ꥢȤƶ뤳ȤǤޤĤƤۤΤϡڤꥨꥢSareaȤ̾ŤƤȤȤǤäơ桹ϰʲޤ
ά
ʤΤǡʲΤ褦˳ǤФŤߤ뤳ȤǤޤ
ά
ǤνŤդη̤ϡǥܥ塼RSMΥξ¸Ǥǥܥ塼ʤ륨ꥢ˥Ȥ˥եåȤRSMΥꥢ뤿Ǥ
---------------------------------------------
Ķ7ؤ³ġ
ꤢʤΤǡޤǾ֤Ƥ
ȡޤɽӼϥåĥάΤǡʸȤƤ
--------------------------------------------------------------
5.2 Scene point cloud genration
֥ȼ2ΤޤȤޤä뤿ˡ桹reflective shadow maps(RSM)Υƥ˥åѤޤRSMΥǥϤʤꥷץǡ桹ξˤŬѤǤޤƻ֤ǶѰʥץ̩٤äξȤ餵줿ΤߤץޤϺǤΨŪʤΤΣĤǡ˽Ҥ٤褦˥2ץ뤹뤿GPUǹ٤븽ߤˡǤäơ(4)Ф2ΤޤȤޤäϤưפ뤳ȤǤޤ
桹ϸRSMΥ쥤[DachsbacherStamminger05]ѤޤϸΥץѥδ֥饹줿2VPLκǽŪʶ٤뤳ȤǽˤޤˡãΤؤγVPLñͤޤưפˤޤ
ο餹ˡ桹϶٤θ饹ѤƵRSMΥץ̣Τˤ뤿˥ޡȤʥե륿ѤޤΥե륿¬[WFABDG05]ƤꡤVPLζ٤ˤVPLΥ饹뤳Ȥ鹽ޤΥƥåפ³ñͥơΤˤޤξϤμAppendixBDZ뤳ȤǤޤ
--------------------------------------------------------------
Ķ6³ġ
ꤢʤΤǡޤǾ֤Ƥ
ȡޤɽӼϥåĥάΤǡʸȤƤ
--------------------------------------------------------------
5. Light propagation volumes
ǽˡξϤǻѤΥꥹȤޤʸǤΤ٥ȥǡʸǤΤǤǤ뤳ȤդƤ
ɽ1ξϤǻѤ륷ܥ
5.1Overview
[ATS94]ɽˤѸǡ̾ˤĤƤΥΥΥޥŸ[Kajiya86]ͤ뤳ȤϤޤ礦
(1)
ǡ
ά
ե˰¸ΤΤάޤ
Ÿ2ȿͤˤä¤줿ͭ²ȿͤξˤƤ3Ĥˡ˸餹ȤǤޤ
(2)
ǡ
ά
桹Ϥγƹܺ٤˹ͤޤ
ǽιI0Goe0ϸľܲĻɽƤꡤηɽƤ֥ͥȤ뤳Ȥˤꥢ륿ǰŪ˵ޤG̡̾ο٥ХåեDz褵ޤ
I1GoK1G1e0ϥǤƤθľܾɽƤꡤǡ
GoŪʿ٥ХåեѤƲ褵롣
K1ǤϡȾᤰäƤ߹ळȤˤͿ졤ƥץʸФƤδؿ餷ŪޤϻΡޤBRDFĥץʾǥǤ
G1¿ΥɥץΣĤˤޤ¿ΰŪʥƥ˥å1Ĥϥɥޥåפǡ֤˿٥Хåե̤δŪʤΤȤƼ갷ޤʥɥޥåԥΥƥ˥åȤƤΨŪˡȤơΤΤƤ뤳ȤɽƤޤ
ǤϡǸιI2G0K1G1K2G2e0ܺ٤˵ޤ礦
Ǹιϴܾ1ȿͤɽƤޤ
G0ϡιƱͤŪʿ٥ХåեץѤƲ褵ޤ
ǸκK2G2ϼ˼褦reflective shadow mapsΥƥ˥åĽʥǥե塼եФƸΨŪ˵ޤ
ά
ǡI1'K2G2e0ϴ¬Ԥΰ֤ĻǤʤǤľܾǤ
äơ桹I1'νϤȤƽľܾˤ륷ɽ뢨litޤʢؿlitͤȤ
I1'K2G2e0ϸߤξȳƥץʸФ륷ɥˡǤޤ뤳ȤǤޤ
äơreflective shadow mapsΥƥ˥åĸGPUǤιΨŪ˵ˡǤȤȤ餫ˤʤޤ
(2)ϲǺƥ롼ײޤ
(3)
Τ褦ˡɤΤ褦ˤơ饹饤˿Ū˥줿ȤȤȾμǺƥ롼ײΤƤޤϡȿŪ1ĤؤؤѴޤ
ϸߤΥ饤饤ϡɥǸΨ褯ˡǤ
[Keller97]ˤäƤ줿ȥ饸ƥξˤơI1'K2G2e0νϤȤ2ʤޤȤޤޤΤޤȤޤˤƳƸФK1G1ȤȤˡǤ
(4)
(K2G2e0)iϤޤȤޤ꤫iܤ2Ǥ
˥ꥹȤ褦ˡΥƥ˥å˴Ť¿Υƥ˥å¸ߤޤƤϡ¤ˤСο1ԥ뤢ɴǤ뤿ᡤΤ褦˸¿Τ뤳Ȥʥѥեޥڥʥƥޤ
⤦ĤΤκǤĩŪʬGγ¦DZ줿롼θΤǤĽҤƥ˥å¿ϳVPLФƲĻȽ꤬ʤ뤳ȤɬפȤä뤿2롼̵뤷Ƥޤʤ顤Ļ䤤碌ФƳΨŪʥץѤΤɤѥեޥä֤imperfect shadow mapsˤθ뤳ȤޤǽǤξϤ˽Ҥ٤褦2롼ϰޤ
I2G0K1G1K2G2e0̤Υѥץ饤ϰʲǤ
ά
Υޤ鵤Ť褦ˡK1G1̺Ǥ⥳Ȥ륮㥶ƥåפǤ줿VPLΤޤȤޤ뤳ȤΩäƤ[DachbacherStamminger07]饤ȥå[WFABDG05]Τ褦ʽŪץˡղŪʤΤǤƥ㥶ƥåפ̤Ŭޤϥ֥4ˤƽҤ٤Ūɽȼä֤Υǥեɥǥޤϥǥեɥ饤ƥѥǤ
桹ϥ㥶Ǥ⤹äǤȤK1G1Ǹޤˡ¿θФƥХå줿åޤǡθǽŪʲؾʽϤ⤿餹ΤȤޤVPLδܾФƲ桹ΤʥǤ
桹ϥ르ꥺʷ˵ҤǥãǺǸιˡƤޤ
3Ǽ褦˥르ꥺ4ĤΥѡȤ鹽ޤ
ɽꤹǥ
Υơreflective shadow mapؤȥˤ2ΤޤȤޤ뤳Ȥ鹽ޤ
ǥܥ塼ؤβ۸ñ͡
injectionǤϤʤطŤȤäʤΤ"ñ"Ȥˤޤ
Υơ鲾۸ꤹΤͿȡĴ·Υܥ塼ƥˤɽ줿ǥեɤؤñͤޤ
ܥ塼Τǥã
ǥοǡܥ塼Τ륰åǰۤʤ륹ޤ֤뤳Ȥˤǥãޤ
ǽŪʥ饤ȥץѥܥ塼ʸãΡˤǥΥ饤ƥ
줿ǥܥ塼Υ饤ƥŬѤޤΥ饤ƥФSHǥܥ塼ˡǸãΤŬѤ뤿Ūˡ[Tatarchunk04][Oat06]Ʊǥܥ塼뤽¾Υץꥱ¿ޤʬˡȾᤰäʬ뤳Ȥͤǥǥե塼եФ;٤ؤѴ뤿˥ΤΤޤSHǼ¹Ԥ뤳ȤǽǤ(ChemLin08)
ˡƤϰʲб륵֥Ǿܺ٤˵Ҥޤ
ŪˤϡΥץ[Evans06]ȤȤˤⵤդ٤Ǥ桹Υץμʹ٤⤯ɬפȤʪŪʸã˴ŤΤ˱äƤ뤳ȤǤ
åɶSHȶΤŪʶɽ껲Τ褦ʤĤβ꤬ĤäƤޤ桹ϤνȲƤ"Improvements and optimization"֥ǵޤ
------------------------------------------------------
Ķ5ؤ³ġ
ꤢʤΤǡޤǾ֤Ƥ
-------------------------------------------------------
4The Path to Our Solution
CryEngine2ʤ桹ưŪʾꥢ륿Ѳ륵ݡȤޤǤ[Wenzel06]ǽҤ٤Ƥ褦ˡˡ˲ǽǡ٤ưŪäƤޤͳˤꡤХ륤ߥ͡βˡ˻ץϲȤȤޤͳϰʲǤ̲ץʤʤǤդλޤϥϡʤˤǡưˡ˴ŤΡ"Instant radiosity"[Keller97])ФGPUǺǤΨŪǤ롣ʤ顤ʿ褹뤳Ȥϥꥢ륿ॢץꥱФǤޤ
Ĥߤ̡桹ˤꤳ꤬褵ޤȥȥʣʬΥ뤿˥ǥեɥƥ˥åѤޤ
ǶΥǥϡ롼ײ줿[WFABDG05]Υ١[Balestra08]ǥեɥѤ뤳ȤǤԱʤȤˡβˡϤ뾮ʥХκŬΤߤΤǡɬפȤ줿ԡɥåפޤ
θ塤ܾФʿξĹʷȤȤϤäꤷޤäơŬϰϤĿ¿ΤܤȤФƺŬɤǤ
ϡ[SGNS07]ǻȤ줿ȥåХƥ륢åץץ˽Ⱦ٥ιͤƳФޤʤ顤ȿѲȼξˡʤʼΥǥߤޤ㤨СաӤʤɡˡ3ܤΥǥϡGPUΥե졼ȤȥХαƶ餹˥֤줿ǥեɥ饤ȤΥ졼ХåեѤ뤳ȤǤϡɤԡɥåפͿˤؤ餺Υ֤줿ץ뤫ͳ褹륨åˤơǽʥƥեȤĤ¸ߤޤ
äơƤξˤơѥեޥʣʥˤơHD̲٤ĸΥˤĤƤޤ줬ΤǤ
뤤ĤΰۤʤˡƤƤޤ㤨[NicholsWyman09], [NSW09]Τ褦ʤΤǡѥեޥˤĤʬŪʲˡͿ줿ˤޤξ塤Υƥ˥åϢ³ι⤤ȥǤդΥĤޤ귲դԤʣ褦ʥǤϤ褯륷ξˤƤϡۤȤΩޤ桹ϻ֤ι«Τᡤˡϼޤ
ˡ嵭ˡˤοO(np)O(nlog(p))Ǥǡnϸǡp褹ԥǡ¿Υ饤Ȥ褹뤳ȤФѥեޥСإåɤϸΥϡɥФƤϼޤ椨ˡ桹¿Υ֥롼ȥեΥϡɥäƤƤŤȤãޤʤ顤饤ȤοO(n+p)ޤǸäˤϡƤǤ륢ץˤʤޤ¾꤬¸ߤޤФƼǾ뤳ȤǤǶ[RGSDK08]imperfect shadow map̵Dz褵ޤ2VPLФƥΥ饹饤ǽˤ뤿ͭʥǥǤޤפʣޤɲŪʷƥåפưŪʥΥݥȥ١Υȥɽ뤿ɬפȤʤޤϵǡԤʣʣʥǤϡäˤäˤʤޤ
桹Υƥ˥åǤϡ롼Фimperfect shadow mapsѤ뤳ȤˤǽǤΥƥ˥åõ֤¤ΤᡤޤǤޤɲŪʥꥪХإåɤȥåʣΤᡤ¾Υݥȥ١Υɽ¸뤳ȤȤȤޤ
-------------------------------------------------------
Ķ4³ġ
0 コメント:
コメントを投稿