The Journal of the Institute of Image Electronics Engineers of Japan Vol.47 No.4 (2018)

IIEEJ ☠ᄚ -- VC2018特集 --

อकతγϟυ΢ϚοϓΛ༻͍ͨ Frustum Traced Shadows ͷߴ଎Խ

† † ٢༤հ ʢਖ਼ձһʣ℄ ஐതޱߔ

ࣜձࣾεΫ΢ΣΞɾΤχοΫεג †

Accelerating Frustum Traced Shadows Using Conservative Shadow Maps

Tomohiro MIZOKUCHI†, Yusuke TOKUYOSHI† (Member)

† SQUARE ENIX CO., LTD.

ʪ͋Β·͠ʫ ຊ࿦จ͸ Frustum Traced Shadows ๏ʹΑΔϋʔυγϟυ΢ͷܭࢉΛߴ଎Խ͢ΔඳըύΠϓϥΠϯΛ ఏҊ͢Δɽ͜ͷ Frustum Traced Shadows ๏͸ۙ೥ήʔϜͷΑ͏ͳϦΞϧλΠϜΞϓϦέʔγϣϯͰ༻͍ΒΕ͍ͯ Δ͕ɼγϟυ΢Ϛοϓ๏ͱൺ΂Δͱܭࢉίετ͕ߴ͍ͱ͍͏໰୊͕͋Δɽͦ͜Ͱຊ࿦จͰ͸͜ͷ Frustum Traced Shadows ๏ͷύΠϓϥΠϯʹอकతγϟυ΢ϚοϓΛ༻͍ͨӨͷ൑ఆॲཧΛ૊ΈࠐΈɼೋஈ֊ͷӨͷ൑ఆΛߦ͏͜ ଘख๏ΑΓਫ਼౓ͷߴ͍อकతγϟυ΢Ϛοϓͷ࣮૷ʹ͍ͭͯ΋ड़΂Δɽ4K ͷεطͱͰߴ଎Խ͢Δɽ͞Βʹຊ࿦จ͸ Δͱ໿ 2.4 ഒӨ͢ۉΫϦʔϯղ૾౓ʹ͓͚Δ࣮ݧͷ݁Ռɼߴ଎Խͷ౓߹͍͸γʔϯʹΑͬͯ͹Β͖͕ͭ͋Δ΋ͷͷฏ ͷඳը଎౓Λ޲্Ͱ͖Δ͜ͱ͕͔֬ΊΒΕͨɽ Ωʔϫʔυɿϋʔυγϟυ΢, irregular z-buffers, อकతγϟυ΢Ϛοϓ

This paper proposes a pipeline to accelerate the computation of frustum traced hard shad- ows. Recently this shadow algorithm has been applied to real-time applications such as video games, but it is computationally expensive compared to shadow mapping. To reduce the computation cost of the frustum tracing, this paper employs a two-pass visibility test by integrating a conservative shadow map into the pipeline of frustum traced shadows. Furthermore, this paper also presents a more precise implementation of the conservative shadow map than the previous method. In our experiments for 4K screen resolution, although the performance improvement varies depending on the scene, the shadow computation time is improved by about 2.4 times on average. Keywords: hard shadows, irregular z-buffers, conservative shadow maps

͏ɽ͔͠͠ͳ͕Β͜ͷϑϥελϜτϨʔγϯάʹΑΔӨͷ 1. ͸͡Ίʹ ࢉܭ਺͕ଟ͍ͱܗ൑ఆ͸γΣʔσΟϯά఺ͱγʔϯͷࡾ֯ Wyman Β1)͕ఏҊͨ͠ Frustum Traced Shadows ๏͸Ϩ ίετ͕ߴ͘ͳͬͯ͠·͏ͱ͍͏໰୊͕͋Δɽͦ͜Ͱຊ࿦ ΠτϨʔγϯάͱಉ඼࣭ͷϋʔυγϟυ΢ΛϦΞϧλΠϜ จͰ͸ Frustum Traced Shadows ๏ͷύΠϓϥΠϯʹอक 6) Ͱඳը͢Δٕज़Ͱ͋Γɼۙ೥Ͱ͸ Corporation ͕ తγϟυ΢Ϛοϓ Λ૊ΈࠐΉ͜ͱͰਤ 1 ʹࣔ͢ೋஈ֊ͷ Δ NVIDIA GameWorks Ͱར༻͢Δ͜ͱ͕Ͱ͖Δ2)ɽ Өͷ൑ఆΛߦ͏ɽอकతγϟυ΢Ϛοϓ͸ඞͣӨͱͳΔอ͢ڙఏ ͜ͷख๏͸ Ubisoft Entertainment S.A. ͷ Tom Clancy’s कతͳਂ౓Λอଘͨ͠γϟυ΢ϚοϓͰ͋Δɽ௨ৗͷγϟ The DivisionTM ͳͲͷήʔϜͰ࢖༻͞Ε͍ͯΔ3)͕ɼ௨ৗ υ΢Ϛοϓ͕Ө͔൱͔ͷ൑ఆʹޡࠩΛ࣋ͭͷʹର͠ɼอक ͷγϟυ΢Ϛοϓ๏4)ͱൺ΂Δͱॲཧ͕࣌ؒେ͖͍ͱ͍͏໰ తγϟυ΢Ϛοϓ͸ඞͣӨͰ͋Δ͜ͱ͕อূ͞ΕͨྖҬΛ ୊͕͋Δɽͦ͜Ͱຊ࿦จ͸͜ͷ Frustum Traced Shadows ෦෼తʹݕग़͢Δ͜ͱ͕Ͱ͖Δɽ͜ͷอकతγϟυ΢Ϛο ๏Λߴ଎Խ͢ΔӨͷඳըύΠϓϥΠϯΛఏҊ͢Δɽ ϓ͸ݩʑ੩తͳγʔϯʹ͓͍ͯγϟυ΢ϨΠͷ਺Λ࡟ݮ͢ Frustum Traced Shadows ๏Ͱ͸ Irregular Z-Buffer ΔͨΊʹ։ൃ͞Εͨ΋ͷͰ͋Δ͕ɼຊ࿦จͰ͸ಈతͳγʔ IZB)1)ʹޫݯ͔ΒݟͨγΣʔσΟϯά఺Λ Per-Pixel ϯʹ͓͍ͯ IZB ͷςΫηϧʹ֨ೲ͞ΕͨγΣʔσΟϯά఺) Linked Lists5)Λ༻͍ͯอଘ͠ɼ֤γΣʔσΟϯά఺ʹର ΛΧϦϯά͢ΔͨΊʹ༻͍Δɽͭ·Γ·ͣ͜ͷอकతγϟ ϑϥελϜτϨʔγϯάʹΑΔݫີͳӨͷ൑ఆΛߦ υ΢ϚοϓΛ༻͍ͨૈ͍Өͷ൑ఆͰγΣʔσΟϯά఺ΛΧͯ͠

418 The Journal of the Institute of Image Electronics Engineers of Japan Vol.47 No.4 (2018)

(a) Ұஈ֊໨ͷӨͷ൑ఆ (b) ೋஈ֊໨ͷӨͷ൑ఆ (c) ϨϯμϦϯά݁Ռ ਤ 1 ຊ࿦จͷϋʔυγϟυ΢ͷඳըύΠϓϥΠϯͰग़ྗͨ͠ visibility mask buffer (aɼb) ͱ࠷ऴϨϯμϦϯά݁Ռ (c) Fig. 1 Visibility mask buffer (aɼb) and final result (c) rendered using our hard shadow rendering pipeline

ڥ؀ද 1 ਤ 1 ͷ࣮ߦ Table 1 Execution environment of Fig. 1 ਺ 279kܗࡾ֯ IZB ͷղ૾౓ 2048×2048 εΫϦʔϯղ૾౓ 3840×2160 GPU NVIDIA GeForce GTX 1070

Ϧϯά͠ʢਤ 1(a)ʣɼ࣍ʹΧϦϯά͞Εͳ͔ͬͨγΣʔσΟ ϯά఺ʹͷΈϑϥελϜτϨʔγϯάʹΑΔӨͷ൑ఆΛߦ ࢉίετΛ࡟ݮ͢Δʢਤ 1(b)ʣɽද 1 ʹ࣮ࣔ͢ߦܭ͜ͱͰ͏ ԼͰਤ 1 ͷγʔϯΛϨϯμϦϯά͢Δ৔߹ɼ͜ͷೋஈڥ؀ Ͱ׬શܗࢉ࣌ؒΛ 7.4 ms ͔Β 3.7 ms ·Ͱ ਤ 2 ඞͣӨͱͳΔγΣʔσΟϯά఺ʢࠨʣͱࡾ֯ܭͷӨͷ൑ఆʹΑͬͯ֊ ʹ෴ΘΕͨςΫηϧʢӈʣ ݮΒ͢͜ͱ͕Ͱ͖ΔɽWyman Βͷ Frustum Traced Shad- Fig. 2 Fully shadowed shading points (left) and a texel (ows ๏Ͱ͸ IZB ʹ֨ೲ͞ΕΔγΣʔσΟϯά఺Λ༻͍ͯࡾ fully covered by a triangle (right ΛΧϦϯά͢ΔͷͰɼຊ࿦จ͕ఏҊ͢ΔγΣʔσΟϯܗ֯ ΋ΑΓଟ͘ΧϦϯάܗά఺ͷΧϦϯάʹΑͬͯ͞Βʹࡾ֯ 2. อकతγϟυ΢Ϛοϓ ͢Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔɽ·ͨຊ࿦จͰ͸γΣʔσΟ ϯά఺ͷ࡟ݮ཰ΛΑΓ޲্ͤ͞ΔͨΊɼਫ਼౓ͷߴ͍อकత ຊύΠϓϥΠϯͷྲྀΕΛઆ໌͢Δલʹ·ͣอकతγϟυ Ͱ׬શܗγϟυ΢Ϛοϓͷ࣮૷ʹ͍ͭͯ΋ड़΂Δɽ͜ͷߴਫ਼౓ͳอ ΢Ϛοϓʹ͍ͭͯड़΂Δɽਤ 2 Ͱࣔ͢Α͏ʹࡾ֯ Ͱ ʹःณ͞ΕͨྖҬʢϐϯΫͷྖҬʣʹؚ·ΕΔγΣʔσΟ(7ڀकతγϟυ΢Ϛοϓͷ࣮૷ʹ͍ͭͯ͸զʑͷઌߦݚ ެ։͞Ε͍ͯΔ͕ɼຊ࿦จͰ͸ΑΓৄࡉʹ࣮૷ʹ͍ͭͯड़ ϯά఺ʢ྘ͷ఺ʣ͸ඞͣӨͱͳΔɽ͜ͷྖҬ͸อकతͳਂ ΂Δɽ·ͨຊ࿦จͰ͸௿ղ૾౓ͱߴղ૾౓ͷอकతγϟυ ౓ʢ੺͍఺ͷਂ౓ʣΛ༻͍ͯදݱ͞ΕΔͨΊɼอकతγϟ ΢Ϛοϓʹ͓͚Δ࣮ݧ݁Ռͷҧ͍Λࣔ͢͜ͱͰख๏ͷ༗ޮ υ΢Ϛοϓʹ͸͜ͷਂ౓ΑΓ΋ԕ͍஋͕֨ೲ͞Εͳ͚Ε͹ ੑʹ͍ͭͯٞ࿦͢Δɽ ͳΒͳ͍ɽอकతγϟυ΢Ϛοϓʹ͜ͷอकతͳਂ౓Λग़ Ͱ׬શʹ෴ΘΕͯܗWyman Βͷ࣮૷Ͱ͸ϑϥελϜτϨʔγϯάΛߦ͏த ྗ͢Δʹ͸·ͣςΫηϧ͕୯Ұͷࡾ֯ 6) Δ͔൱͔Λ൑ఆ͢Δඞཁ͕͋ΔɽHertel Β ͸ਤ 3(a) Ͱ͍ ͠ڈͰӨͱ൑ఆ͞ΕͨγΣʔσΟϯά఺Λஞ࣍ IZB ͔Βআ ɼຊύΠϓϥΠϯ͸ϑϥελϜτϨʔγϯάΛߦ ࣔ͢Α͏ʹอकతγϟυ΢Ϛοϓͷը૾ۭؒʹ౤Өͨ͠ࡾ͕͍ͨͯ ࢉ͢Δ͜ܭ཭Λڑͷ֤ล͔ΒςΫηϧͷ֎઀ԁ·Ͱͷܗ֯ લʹγΣʔσΟϯά఺ΛΧϦϯά͢ΔͷͰޮ཰͕ྑ͍ɽ͏ ܝʹ ͜ͷΧϦϯάͰ༻͍Δอकతγϟυ΢Ϛοϓ͸୯Ұͷࡾ֯ ͱʹΑͬͯ͜ͷ൑ఆΛߦͬͨʢHLSL ίʔυΛ෇࿥ A Ͱ׬શʹ෴ΘΕͨςΫܗͰ׬શʹ෴ΘΕͨςΫηϧʹอकతͳਂ౓Λอଘ͢Δ͜ ࡌ͢Δʣɽ͔͜͠͠ͷख๏͸ࡾ֯ܗ ͱʹΑͬͯੜ੒͞ΕΔͨΊɼຊύΠϓϥΠϯ͸อकతγϟ ηϧΛඞཁҎ্ʹอकతʹݕग़ͯ͠͠·͏ͱ͍͏໰୊͕͋ ଘࡏ͢Δγʔ Δɽͦ͜Ͱຊ࿦จͰ͸อकతγϟυ΢Ϛοϓͷਫ਼౓Λ޲্͕ܗυ΢ϚοϓͷςΫηϧΑΓ΋େ͖ͳࡾ֯ ܭଘख๏ͱ΄΅ಉ౳ͷطϯʹରͯ͠ಛʹޮՌతͰ͋Δɽ ͤ͞ΔͨΊʹɼΑΓݫີͳ൑ఆΛ Ҏ্Λ·ͱΊΔͱຊ࿦จͷߩݙ͸࣍ͷͱ͓ΓͰ͋Δɽ ࢉ࣌ؒͰߦ͏࣮૷ΛఏҊ͢Δɽ

Ͱ׬શʹ෴ΘΕͨςΫηϧܗFrustum Traced Shadows ๏ͷύΠϓϥΠϯʹอकత 2.1 ࡾ֯ • γϟυ΢ϚοϓΛ૊ΈࠐΉ͜ͱͰӨͷඳըΛߴ଎Խ͢Δɽ ਤ 4 ʹຊ࿦จͷอकతγϟυ΢ϚοϓͷϐΫηϧγΣʔ Ͱ׬શʹ෴ΘΕͨςΫηϧΛݫີʹ൑ܗμʔΛࣔ͢ɽࡾ֯ • อकతγϟυ΢Ϛοϓͷਫ਼౓Λ޲্ͤ͞Δ͜ͱͰ IZB ʹ ఆ͢ΔͨΊʹɼຊ࿦จͰ͸ਤ 3(b) Ͱࣔ͢Α͏ͳςΫηϧ ೲ͞ΕΔγΣʔσΟϯά఺ΛΑΓଟ͘ΧϦϯά͢Δɽ֨ u, v, w) ͷ֤࣠ͷ࠷খ஋ʢ͢ͳΘͪࡾ) ܥͷ࢛۱ͷॏ৺࠲ඪ

419 The Journal of the Institute of Image Electronics Engineers of Japan Vol.47 No.4 (2018)

༻͍ͯੜ੒͍ͯ͠Δ͕ɼHLSL ͷγΣʔμʔϞσϧ 6.1 ͔Β ࢖༻ՄೳͱͳΔ༧ఆͷ SV Barycentrics8)Λ༻͍Δ͜ͱͰ͜ ΕΒͷ஋ΛδΦϝτϦγΣʔμʔͰੜ੒ͤͣͱ΋ϐΫηϧ γΣʔμʔͰ௚઀࢖༻͢Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔɽͨ͠ ͕ͬͯ͜ͷ࣮૷͸কདྷߴ଎ԽͰ͖ΔՄೳੑΛ͍࣋ͬͯΔɽ

2.2 อकతͳਂ౓ (a) Hertel Βͷख๏ (b) ຊख๏ ౤Өͨ͠ʹܗอकతγϟυ΢Ϛοϓʹ͸ςΫηϧΛࡾ֯ Ͱ׬શʹ෴ΘΕͨςΫηϧͷݕग़ํ๏ͷҧ͍ܗਤ 3 ࡾ֯ ͷਂ౓ΑΓ΋ԕ͍஋Λอଘ͢Δඞཁ͕͋Δʢਤ 2ʣɽ্ܗFig. 3 Difference between two detection techniques for ࢛֯ Ͱ͋Δͨܗ͸ฏߦ࢛ลܗa fully covered texel ແݶԕޫݯΛԾఆ͢Δͱ͜ͷ࢛֯ Ίɼର֯ઢϕΫτϧΑΓɼอଘ͢΂͖อकతͳਂ౓ͷԼݶ void main(float4 p : SV_Position, float2 s : BARYCENTRICS) { ΊΔ͜ͱ͕Ͱ͖Δɽٻfloat2 dx = ddx(s) * 0.5; ஋ zmin Λ float2 dy = ddy(s) * 0.5;      ( ) ( )   ( ) ( )  float2a=dx+dy; max  ∂z x,y + ∂z x,y  ,  ∂z x,y − ∂z x,y  float2b=dx-dy; ∂x ∂y ∂x ∂y zmin = z(x, y)+ (9) if(s.x < max(abs(a.x),abs(b.x)) || s.y < max(abs(a.y),abs(b.y)) 2 || 1.0 - s.x - s.y < max(abs(a.x + a.y),abs(b.x + b.y))) { ͷਂ౓Ͱ͋ܗdiscard; ͜͜Ͱ z(x, y) ͸ςΫηϧத৺ʹ͓͚Δࡾ֯ } } Δɽ͜ͷ zmin ͸ϐΫηϧγΣʔμʔͰܭࢉ͢Δ͜ͱ΋Ͱ ͖Δ͕ɼϐΫηϧγΣʔμʔͰܭࢉͨ͠ਂ౓Λग़ྗ͢Δͱ ਤ 4 อकతγϟυ΢ϚοϓͷϐΫηϧγΣʔμʔʢHLSLʣ GPU ϥελϥΠβʔͷਂ౓ΧϦϯάΛ׆༻Ͱ͖ͳ͍ͱ͍ Fig. 4 Our pixel for conservative shadow maps (HLSL) ͏໰୊͕͋Δɽ͜ͷ໰୊͸ Conservative Depth Output Λ Δ͜ͱͰܰݮ͢Δ͜ͱ΋Ͱ͖Δ͕ຊ࿦จͰ͸࣮૷ͷ؆͍༻ ཭ʣΛ༻͍Δɽແڑͷ֤ล͔ΒςΫηϧ·Ͱͷූ߸෇ܗ֯ ୯͞Λ༏ઌ͠ɼHertel Β6)ͱಉ༷ʹ GPU ϥελϥΠβʔ ݶԕޫݯΛԾఆ͢Δͱ͜ΕΒͷ஋͸࣍ͷࣜ (1)ʙ(3) Ͱ༩͑ ͕αϙʔτ͢Δ Slope Scaled Depth Bias Λ࢖༻͢Δ͜ͱ ΒΕΔɽ Ͱ zmin Λۙࣅ͢ΔɽSlope Scaled Depth Bias Λ༻͍Δͱɼ

GPU ϥελϥΠβʔ͕ग़ྗ͢Δ஋ zout ͸࣍ͷࣜ (10) Ͱ༩ u(x, y) − max(|au|, |bu|) (1) − | | | | ͑ΒΕΔɽ v(x, y) max( av , bv ) (2)         − | | | | ∂z(x, y) ∂z(x, y) w(x, y) max( aw , bw ) (3) zout = z(x, y)+d max   ,   (10) ∂x ∂y ͜͜Ͱ x, y ͸อकతγϟυ΢ϚοϓͷςΫηϧத৺ͷҐ ͜͜Ͱ d ͸ Slope Scaled Depth Bias Ͱ͋Δɽd =1ʹઃ ஔɼͦͯ͠ [au,av,aw], [bu,bv,bw] ͸ॏ৺࠲ඪܥʹ͓͚Δς ఆ͢Δ͜ͱͰ GPU ϥελϥΠβʔ͸ zout ≥ zmin Λຬͨ Ϋηϧͷର֯ઢϕΫτϧͷ௕͞Λ൒෼ʹͨ͠΋ͷͰ͋Γɼ ͢อकతͳਂ౓Λࣗಈతʹग़ྗ͢Δɽ s(x, y)=[u(x, y),v(x, y),w(x, y)] ͱ͢Δͱ࣍ͷࣜ (4)(5) Ͱ༩͑ΒΕΔɽ 3. ӨͷඳըύΠϓϥΠϯ

∂s(x, y) ∂s(x, y) ຊ࿦จͰ͸ Frustum Traced Shadows ๏ͷύΠϓϥΠϯ [au,av,aw]= + (4) 2∂x 2∂y ʹ 2 ষͰड़΂ͨอकతγϟυ΢ϚοϓΛੜ੒͢Δॲཧͱɼ ∂s(x, y) ∂s(x, y) [b ,b ,b ]= − (5) ͦͷอकతγϟυ΢ϚοϓΛ༻͍ͨૈ͍Өͷ൑ఆॲཧͱΛ u v w 2∂x 2∂y ৽ͨʹ௥Ճ͢Δ͜ͱͰ IZB ʹ֨ೲ͞ΕΔγΣʔσΟϯά఺ ΛΧϦϯά͢Δɽ͜ͷΧϦϯάʹΑͬͯγΣʔσΟϯά఺ ͔ܗࣜ (1)ʙ(3) ͕ͻͱͭͰ΋ 0 ະຬͷͱ͖ςΫηϧ͸ࡾ֯ ϑϥܗͰ׬શʹ෴Θ ͚ͩͰͳ͘ɼϑϥελϜτϨʔγϯάʹ͓͚Δࡾ֯ܗΒ͸Έग़Δɽ͕ͨͬͯ͠ɼςΫηϧ͕ࡾ֯ Ε͍ͯΔ͔൱͔͸࣍ͷ৚݅ࣜ (6)ʙ(8) Ͱ༩͑ΒΕΔɽ άϝϯτͷ࡟ݮ཰΋޲্ͤ͞Δ͜ͱ͕Ͱ͖Δɽ

u(x, y)

͍͓ͯʹ͜͜Ͱ w(x, y)=1− u(x, y) − v(x, y)ɼ|aw| = |au + ͨΊɼ྆ऀΛಉ͡ղ૾౓ʹઃఆ͢Δɽ͜ͷ౤Өۭؒ av|, |bw| = |bu + bv| Ͱ͋ΔͷͰɼw ࣠ʹؔ͢Δ൑ఆ͸ γΣʔσΟϯά఺͕Ө͔൱͔Λอकతγϟυ΢Ϛοϓͷਂ ֨ʹ ड़͢Δ͜ͱ΋Ͱ͖Δɽݱࡏͷզʑ ౓Λ༻͍ͯ൑ఆ͠ɼӨͱͳΔγΣʔσΟϯά఺Λ IZBه͍ͯ༻u(x, y),v(x, y) Λ ͷ࣮૷Ͱ͸͜ͷ u(x, y),v(x, y) ΛδΦϝτϦγΣʔμʔΛ ೲ͢ΔલʹΧϦϯά͢Δɽ΋͠γΣʔσΟϯά఺͕Өͱ൑

420 The Journal of the Institute of Image Electronics Engineers of Japan Vol.47 No.4 (2018)

4K ͷεΫϦʔϯղ૾౓ʢ3840×2160ʣʹରͯ͠ 2048×2048 ԼͰ࠷΋ྑ͍ڥ؀ղ૾౓ͷ IZB Λ༻͍ͨɽ͜ΕΒ͸ຊ࣮ݧ ύϑΥʔϚϯε͕ಘΒΕͨղ૾౓ͷ૊Έ߹ΘͤͰ͋Δɽຊ ଘख๏1),3)ͱҧͬͯ IZB ͷۭؒ෼ׂΛߦ͍ͬͯط࿦จͰ͸ ଘख๏ͱಉطͳ͍͕ɼޫݯͷϏϡʔϑϥελϜͷେ͖͞͸ ༷ʹγΣʔσΟϯά఺ͷό΢ϯσΟϯάϘοΫεΛ༻͍ͯ ଘख๏ (b) ຊख๏ ܾఆͨ͠ɽط (a) ϑϥάϝϯτͷΧϦϯάͷҧ͍ܗਤ 5 ࡾ֯ ࢉ࣌ؒܭ Fig. 5 Difference of triangle fragment culling techniques 4.1 ଘͷطຊ࣮ݧͰ࢖༻ͨ͠γʔϯΛਤ 6 ʹࣔ͢ɽͦͯ͠ ࢉ࣌ؒܭఆ͞Εͨ৔߹ɼ͜ͷγΣʔσΟϯά఺ʹରԠ͢Δ visibility Frustum Traced Shadows ๏ͱຊख๏ͷ֤ύεͷ ʹࢉ࣌ؒΛൺֱ͢Δͱߴ଎Խͷ౓߹͍ܭmask buffer ͷϐΫηϧʹӨΛग़ྗ͠ʢਤ 1(a)ʣɼͦ͏Ͱͳ Λද 2 ʹࣔ͢ɽ Δͱ 2K ղ૾౓Ͱ໿ 1.9 ഒɼ4K͢ۉ͚Ε͹ IZB ͷϦετʹ͜ͷγΣʔσΟϯά఺Λ௥Ճ͢Δɽ ҧ͍͸͋Δ΋ͷͷɼฏ ͜ͷૈ͍Өͷ൑ఆ͸ IZB ͷੜ੒ॲཧʹΦʔόʔϔουΛ ղ૾౓Ͱ໿ 2.4 ഒӨͷඳը଎౓͕޲্͢Δ͜ͱ͕֬ೝ͞Ε ੜͤ͞Δ͕ɼγΣʔσΟϯά఺͕࡟ݮ͞ΕΔ෼Ϧετͷ ͨɽ͜ͷߴ଎Խͷ౓߹͍ʹৼΕ෯͕͋Δͷ͸ΧϦϯά͞Εൃ ͷେ͖͞ʹґଘ͢ΔͨΊܗߏஙίετ͕ܰݮ͞ΕΔͨΊɼ࣮ࡍʹ͸ੜ੒࣌ؒ͸୹ॖ͞ ΔγΣʔσΟϯά఺ͷ਺͕ࡾ֯ ΕΔɽ Ͱ͋Γɼอकతγϟυ΢ϚοϓͷςΫηϧΑΓେ͖ͳࡾ֯ 3.2 ϑϥελϜτϨʔγϯάʹΑΔӨͷ൑ఆ ܗʹΑͬͯःณ͞ΕΔγΣʔσΟϯά఺͕ଟ͍΄Ͳޮ཰͕ ϑϥελϜτϨʔγϯάʹΑΔӨͷ൑ఆͰ͸γΣʔσΟ ྑ͘ͳΔ͔ΒͰ͋Δɽਤ 6(f) ͷγʔϯʹ͓͍ͯɼ2K ղ૾ ଘख๏ΑΓ΋஗͘ͳͬͯطࢉ͕࣌ؒܭܭΑͬͯःณ͞ΕΔ͔൱͔Λਖ਼֬ ౓Ͱ͸ຊख๏ͷ߹ʹܗϯά఺͕γʔϯͷࡾ֯ ൑ఆ͢Δɽ͜ͷϑϥελϜτϨʔγϯά͸ޫݯ͔Βݟͨ ͍Δ͕ɼ4K ղ૾౓Ͱ͸ΧϦϯάʹΑΔߴ଎Խ͕อकతγϟʹ ΛϥελϥΠζ͠ɼϐΫηϧγΣʔμʔͰ IZB ʹ υ΢ϚοϓΛੜ੒͢ΔΦʔόʔϔουΛ্ճ͍ͬͯΔɽ3.1ܗࡾ֯ ೲ͞ΕͨγΣʔσΟϯά఺Λॱ࣍ࢀর͢Δ͜ͱͰߦΘ અͰड़΂ͨΑ͏ʹຊ࿦จͰ͸ IZB ͱಉ͡ղ૾౓ʢ2K εΫ֨ × × ΕΔɽ୯७ͳ࣮૷ͩͱ͜ͷӨͷ൑ఆ͸ޫݯ͔Βݟ͑Δγʔ ϦʔϯͰ 1024 1024ɼ4K εΫϦʔϯͰ 2048 2048ʣͷอ ϑϥάϝϯτશͯʹର࣮ͯ͠ߦ͞Εͯ͠·͏ͨ कతγϟυ΢ϚοϓΛ༻͍Δɽอकతγϟυ΢Ϛοϓͷղܗϯͷࡾ֯ Ͱ׬શʹ෴ΘΕͨςΫηϧ͕ଟ͘ͳܗΊɼWyman Β1)͸ GPU ϥελϥΠβʔͰਂ౓όοϑΝΛ ૾౓͕ߴ͍ͱɼࡾ֯ ϑϥάϝϯτΛΧϦϯά͠ɼߴ଎ԽΛߦͬͯ ΔͨΊγΣʔσΟϯά఺ͷ࡟ݮ཰Λ޲্ͤ͞Δ͜ͱ͕Ͱ͖ܗࡾ͍֯ͯ༻ ଘखطࢉ͕࣌ؒܭΔɽ͜ͷਂ౓όοϑΝ͸ਤ 5(a) Ͱࣔ͢Α͏ʹ IZB ʹ֨ Δɽ͕ͨͬͯ͠ 4K εΫϦʔϯʹ͓͚Δ͍ ೲ͞ΕΔγΣʔσΟϯά఺ͷϦετͷதͰޫݯ͔Β࠷΋ԕ ๏ΑΓ΋ߴ଎Խ͞Εͨͱߟ͑ΒΕΔɽ ͍఺ͷਂ౓Λอଘ͢Δ͜ͱʹΑͬͯ࡞੒͞ΕΔɽຊύΠϓ 4.2 อकతγϟυ΢Ϛοϓͷ࣮ߦ݁Ռ ϥΠϯͰ͸ IZB ʹ֨ೲ͞ΕΔγΣʔσΟϯά఺͕࡟ݮ͞ ද 3 ʹ 2048×2048 ղ૾౓ͷอकతγϟυ΢ϚοϓΛੜ ଘख๏ΑΓ΋ΑΓޫݯ ੒ͨ͠ࡍͷ࣮ߦ݁ՌΛࣔ͢ɽγΣʔσΟϯά఺ͷ࡟ݮ཰͸طʹΕΔͨΊɼਤ 5(b) Ͱࣔ͢Α͏ ܗେ͖ͳγʔϯʢਤ 6(b)ʣͰ 0.5%ɼࡾ͕֯ܗ౓͕ਂ౓όοϑΝʹอଘ͞ΕΔɽ͕ͨͬͯ͠ຊ࿦ ൺֱతࡾ֯ਂ͍ۙʹ จ͕ఏҊ͢ΔγΣʔσΟϯά఺ͷΧϦϯάΛ༻͍Δ͜ͱʹ ͕খ͞ͳγʔϯʢਤ 6(e)ʣͰ 1.6%ྑ͍݁ՌΛಘΔ͜ͱ͕ ϑϥάϝϯτ Ͱ͖ͨɽ͜Ε͸อकతγϟυ΢Ϛοϓͷੜ੒ʹ͓͍ͯɼࡾܗΑͬͯγΣʔσΟϯά఺͚ͩͰͳ͘ɼࡾ֯ ʹଘख๏ΑΓ΋ݫີطͰ׬શʹ෴ΘΕͨςΫηϧΛܗ֯ ΋ Wyman ΒΑΓଟ͘ΧϦϯά͢Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳ ΔɽຊύΠϓϥΠϯͰ͸͜ͷਂ౓όοϑΝͷ࡞੒΋ IZB ͷ ൑ఆͨͨ͠ΊͰ͋Δɽ·ͨ࡟ݮ཰͕޲্͍ͯ͠Δʹ΋ؔΘ ࢉ࣌ؒͰ࣮ߦ͢Δܭଘख๏ͱ΄΅ಉ౳ͷطੜ੒࣌ʹߦ͏ɽਂ౓όοϑΝ΁ͷਂ౓ͷॻ͖ࠐΈ͸ GPU Βͣɼຊख๏͸ ϥελϥΠβʔΛ༻͍ͯߦ͏ඞཁ͕͋ΔͷͰɼຊ࿦จͰ͸ ͜ͱ͕Ͱ͖ͨɽ࡟ݮ཰ͷ૿ՃʹΑΔશମͷॲཧͷߴ଎Խ͸ εΫϦʔϯͷ֤ϐΫηϧΛϙΠϯτϓϦϛςΟϒͱͯ͠ѻ Θ͔ͣͰ͸͋Δ͕࣮֬ʹ޲্͢Δ͜ͱ͕Ͱ͖ΔͷͰຊख ͏͜ͱͰ௖఺γΣʔμʔΛ༻͍ͨ୯ҰͷύεͰ IZB ͱਂ౓ ๏͸༗ޮͰ͋Δͱߟ͑ΒΕΔɽਤ 6(b) ͱਤ 6(e) ͷγʔϯ όοϑΝΛಉ࣌ʹ࡞੒͢Δɽ Ͱͷ࣮ߦ࣌ؒΛൺֱ͢Δͱ࣮ߦ࣌ؒʹ໿ 4.3 ms ҧ͍͕͋ Δ͕ɼ֤γʔϯͷ 2K ղ૾౓ͱ 4K ղ૾౓ʹ͓͚Δอकత ࣮ݧ݁Ռ .4 ms ఔ͔͠ҧ͍͕ݟ 0.25 ۉγϟυ΢Ϛοϓͷੜ੒࣌ؒ͸ฏ ఏҊͨ͠ύΠϓϥΠϯʹΑΔ࣮ݧ݁ՌΛࣔ͢ɽຊ࣮ݧͰ ΒΕͳ͍ɽ͜Ε͸อकతγϟυ΢Ϛοϓͷੜ੒ίετ͕ϐ ͸ NVIDIA GeForce GTX 1070 GPU Λ༻͍ͯϋʔυγϟ ΫηϧγΣʔμʔͰ͸ͳ͘ɼόʔςοΫεγΣʔμʔɼδ ଌͨ͠ɽ࣮ݧʹ͸ 2K ͷεΫϦʔϯղ ΦϝτϦγΣʔμʔɼͦͯ͠ϥελϥΠβʔʹେ͖͘ґଘܭࢉ࣌ؒΛܭυ΢ͷ ࢉίܭ਺͕ଟ͘ͳΔͱܗ૾౓ʢ1920×1080ʣʹରͯ͠ 1024×1024 ղ૾౓ͷ IZB Λɼ ͍ͯ͠Δ͜ͱΛ͓ࣔͯ͠Γɼࡾ֯

421 The Journal of the Institute of Image Electronics Engineers of Japan Vol.47 No.4 (2018)

(a) (b) (c) (d) (e) (f) ਤ 6 ຊ࣮ݧͰ࢖༻ͨ͠γʔϯ Fig. 6 Scenes used in this experiment

ࢉ࣌ؒʢmsʣܭද 2 ϋʔυγϟυ΢ͷ Table 2 Computation time of hard shadows (ms) ਺: 12.8Mʣܗ਺:5.3Mʣ Power Plantʢࡾ֯ܗ਺: 279kʣ San Miguelʢࡾ֯ܗSponzaʢࡾ֯ (ຊ࣮ݧͰ࢖༻ͨ͠γʔϯ ਤ 6(a) ਤ 6(b) ਤ 6(c) ਤ 6(d) ਤ 6(e) ਤ 6(f ଘख๏ ຊख๏ط ଘख๏ ຊख๏ط ଘख๏ ຊख๏ط ଘख๏ ຊख๏ط ଘख๏ ຊख๏ط ଘख๏ ຊख๏ط 2K ղ૾౓ ݯͷϏϡʔϑϥελϜߏங 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03ޫ อकతγϟυ΢Ϛοϓੜ੒ – 0.17 – 0.20 – 1.89 – 1.90 – 4.34 – 4.30 IZB ߏங 0.74 0.43 0.38 0.28 0.63 0.32 0.70 0.42 0.30 0.26 0.30 0.27 ϑϥελϜτϨʔγϯά 1.11 0.54 3.51 0.29 10.67 8.18 21.15 8.74 21.68 9.96 12.62 10.24 ߹ܭ 1.88 1.17 3.92 0.80 11.33 10.42 21.88 11.09 22.01 14.59 12.95 14.84 ଘख๏ ຊख๏ط ଘख๏ ຊख๏ط ଘख๏ ຊख๏ط ଘख๏ ຊख๏ط ଘख๏ ຊख๏ط ଘख๏ ຊख๏ط 4K ղ૾౓ ݯͷϏϡʔϑϥελϜߏங 0.10 0.10 0.10 0.10 0.13 0.12 0.11 0.11 0.12 0.12 0.10 0.10ޫ อकతγϟυ΢Ϛοϓੜ੒ – 0.35 – 0.47 – 2.10 – 2.08 – 4.72 – 4.59 IZB ߏங 3.03 1.67 1.66 1.16 2.58 1.18 2.82 1.65 1.24 1.07 1.22 1.10 ϑϥελϜτϨʔγϯά 3.99 1.23 8.63 0.45 15.73 8.83 35.49 9.46 29.74 10.29 15.33 10.79 ߹ܭ 7.12 3.35 10.39 2.18 18.44 12.23 38.42 13.30 31.10 16.20 16.65 16.58

ද 3 อकతγϟυ΢Ϛοϓͷ࣮ߦ݁Ռ 21.5 ms ⇒ 10.2 ms 8.9 ms ⇒ 10.9 ms Table 3 Rendering results of conservative shadow maps ਤ 6(b) ͷγʔϯ ਤ 6(e) ͷγʔϯ ੜ੒࣌ؒ ࡟ݮ཰ ੜ੒࣌ؒ ࡟ݮ཰ Hertel Βͷख๏ 0.48 ms 55.5% 4.75 ms 35.8% ຊख๏ 0.47 ms 56.0% 4.72 ms 37.4% (a) ޮ཰తͳέʔε (b) ޮ཰తͰͳ͍έʔε ਺:6.7Mʣܗετ͕େ͖͘ͳΔɽ͜ͷΦʔόʔϔου͸ 2.1 અͰड़΂ͨ ਤ 7 4K ղ૾౓ʹ͓͚Δ Rungholt Ϟσϧʢࡾ֯ ͷϨϯμϦϯά݁Ռ -Fig. 7 Rendering results of the Rungholt model (trian ͢ڈSV Barycentrics Λ༻͍ͯδΦϝτϦγΣʔμʔΛআ Δ͜ͱͰɼকདྷখ͘͞Ͱ͖Δͱߟ͑ΒΕΔɽ gle count: 6.7M) for 4K resolution 4.3 ࣦഊྫ ϓͷ྆ํͷղ૾౓͕ߴ͘ͳΔͱɼΑΓޮ཰తʹϋʔυγϟ 7 ఏҊͨ͠ύΠϓϥΠϯ͸ਤ (a) ͷ৔߹ޮ཰తͰ͋Δ͕ɼ υ΢Λඳը͢Δ͜ͱ͕Ͱ͖Δɽैͬͯɼຊख๏͸ඞͣӨͱ ਤ 7(b) ͷ৔߹ैདྷͷύΠϓϥΠϯΑΓ΋ॲཧ͕࣌ؒେ͖ ͳΔྖҬ͕ଟ͍԰಺ͷΑ͏ͳγʔϯʹ͓͍ͯಛʹޮՌతͰ ͘ͳΔɽ͜Ε͸ਤ 7(b) ͷΑ͏ͳޫݯͷϏϡʔϑϥελϜ ͋Δͱߟ͑ΒΕΔɽຊύΠϓϥΠϯͰ͸ݱঢ়ɼอकతγϟ ༻υ΢ϚοϓΛੜ੒͢ΔͨΊʹδΦϝτϦγΣʔμʔΛ࢖ ͕ܗͷେ͖ͳγʔϯͩͱ IZB ͷςΫηϧΑΓ΋খ͞ͳࡾ֯ ଟ͘ඳը͞Εɼอकతγϟυ΢ϚοϓͷΦʔόʔϔου͕ ͍ͯ͠Δ͕ɼকདྷ HLSL ͷ SV Barycentrics Λ୅ΘΓʹ༻ ଴ظΧϦϯάʹΑΔߴ଎ԽΛ্ճͬͯ͠·͏͔ΒͰ͋Δɽ͜ͷ ͍Δ͜ͱͰੜ੒ΦʔόʔϔουΛখ͘͞Ͱ͖Δ͜ͱ͕ ໰୊ʹର͢ΔղܾҊͱͯ͠ɼIZB ͷςΫηϧΑΓ΋େ͖ͳ ͞ΕΔɽ ͛ΒڍͷΈอकతγϟυ΢Ϛοϓʹඳը͢Δ͜ͱ͕ܗࡾ֯ 5.2 ࠓޙͷ՝୊ ΕΔɽ͜͏ͨ͠อकతγϟυ΢Ϛοϓ༻ͷඳըΦϒδΣΫ • ιϑτγϟυ΢΁ͷԠ༻ɿຊ࿦จͰ͸ϋʔυγϟυ΢ τͷࣗಈతͳબ୒͸ࠓޙͷ՝୊Ͱ͋Δɽ ͷ࣮ݧ݁ՌͷΈΛ͕ࣔͨ͠ɼఏҊͨ͠ύΠϓϥΠϯ͸ 5. ݁࿦ Frustum Traced Shadows ๏ʹΑΔίϯλΫτγϟυ 5.1 ·ͱΊ ΢ͱγϟυ΢Ϛοϐϯά๏ʹΑΔιϑτγϟυ΢Λࠞ 3) ຊ࿦จͰ͸ɼFrustum Traced Shadows ๏ʹΑΔϋʔυ ߹ͨ͠ Hybrid Frustum Traced Shadows ๏ ʹ΋ద γϟυ΢ͷܭࢉΛߴ଎Խ͢ΔඳըύΠϓϥΠϯΛఏҊ͠ ༻͢Δ͜ͱ͕Ͱ͖ΔɽͦͷͨΊιϑτγϟυ΢ͷ৔߹ ɽ4K ͷεΫϦʔϯղ૾౓Ͱ͜ͷύΠϓϥΠϯΛ༻͍Δ Ͱ΋ίϯλΫτγϟυ΢ͷ෦෼ʹؔͯ͠͸ຊύΠϓϥͨ ໿ 2.4 ഒߴ଎Խ͞ ΠϯΛ༻͍Δ͜ͱͰߴ଎ԽͰ͖Δͱߟ͑ΒΕΔɽۉࢉ͕࣌ؒฏܭ͜ͱͰϋʔυγϟυ΢ͷ ɿอकతγϟυ΢ϚοϓͷςΫηϧΑΓܗΕͨɽຊύΠϓϥΠϯ͸εΫϦʔϯͱอकతγϟυ΢Ϛο • খ͞ͳࡾ֯

422 The Journal of the Institute of Image Electronics Engineers of Japan Vol.47 No.4 (2018)

ͳ 5) J. C. Yang, J. Hensley, H. Gr¨un,N. Thibieroz: “Real-Time͞΅ٴΛڹ͸อकతͳਂ౓ʹશ͘Өܗ΋খ͞ͳࡾ֯ Λอकతγϟυ΢Ϛοϓʹඳը͢ Concurrent Linked List Construction on The GPU”, ComputerܗΊɼ͜ͷࡾ͍֯ͨ Graphics Forum, Vol. 29, Issue 4, pp.1297–1304 (2010). Δͱܭࢉίετ͕ߴ͘ͳͬͯ͠·͏ͱ͍͏໰୊͕͋Δɽ 6) S. Hertel, K. Hormann, R. Westermann: “A Hybrid GPU Ren- -͜ͷ໰୊ͷղܾํ๏ͱͯ͠ςΫηϧΑΓ΋େ͖ͳࡾ֯ dering Pipeline for Alias-Free Hard Shadows”, Proc. of Euro ܗͷΈΛࣗಈతʹબ୒ͯ͠อकతγϟυ΢Ϛοϓʹඳ graphics 2009 Areas Papers (2009). 7) Y. Tokuyoshi, T. Mizokuchi: “Conservative Z-Prepass for -ݕূ͍͖͍ͯͨ͠ɽ Frustum-Traced Irregular Z-Buffers”, Proc. of ACM SIGޙ͛ΒΕΔͷͰࠓڍը͢Δ͜ͱ͕ .(ଘख๏ͱҧ͍ɼຊ࿦จͰ͸ GRAPH 2018 Posters, pp.34:1–34:2 (2018طIZB ͷ౤Өۭؒͷ෼ׂɿ • 8) DirectX Shader Compiler, Shader Model 6.1, https://github.c ͷ౤ӨۭؒΛ෼ׂ͢Δख๏1),3)Λ࢖༻͍ͯ͠ͳ͍ɽ IZB om/Microsoft/DirectXShaderCompiler/wiki/Shader-Model-6.1 .(࣮૷͍͖ͯ͠ (2018ޙࢉίετΛ͞Βʹ࡟ݮ͢ΔͨΊʹࠓܭ ͱߟ͍͑ͯΔɽ͜ͷ෼ׂʹ͸γΣʔσΟϯά఺ͷ 9) Microsoft Corporation, SV InnerCoverage, https://docs.micro͍ͨ soft.com/en-us/windows/desktop/direct3dhlsl/sv-innercovera ෼෍Λ࢖༻͢Δ͕3)ɼอकతγϟυ΢ϚοϓʹΑΔΧ ge (2018). /ϦϯάΛ༻͍ͯແବͳγΣʔσΟϯά఺Λ࡟ݮ͢Δ͜ 10) M. Dabrovic, Sponza Atrium, http://hdri.cgtechniques.com .(ͱ͕Ͱ͖ΔͷͰɼΑΓޮ཰ͷྑ͍෼ׂΛߦ͑ΔͷͰ͸ ∼sponza/files/ (2002 ͳ͍͔ͱߟ͑ΒΕΔɽ 11) F. Mainl, Crytek Sponza, https://www.crytek.com/cryengine /cryengine3/downloads (2010). Ͱ׬શʹ෴Θ 12) University of North Carolina, Power Plant, http://gamma.csܗอकతγϟυ΢Ϛοϓͷߴ଎Խɿࡾ֯ • .(ΕͨςΫηϧͷݕग़͸ఏҊख๏Ҏ֎ʹ΋ Conservative .unc.edu/Powerplant/ (1999 13) M. McGuire, Computer Graphics Archive, https://casual-effe Rasterization Tier 3 ରԠ GPUʢIntel HD 530 ΍ AMD cts.com/data (2017). RadeonTM RX Vega γϦʔζʣͰ͋Ε͹ɼHLSL ͷ SV InnerCoverage9)Λ༻͍Δ͜ͱͰݕग़͢Δ͜ͱ΋Ͱ ෇࿥ A อकతγϟυ΢ϚοϓͷγΣʔμʔ Δɽ͜ͷػೳ͸୯७Ͱ͋Δ͕ɼҰํͰ Conservative Hertel Β6)ͷอकతγϟυ΢ϚοϓͷγΣʔμʔΛ෇ਤ͖ Rasterization Λ࢖༻͠ͳͯ͘͸ͳΒͳ͍ͨΊɼϐΫη A. 1, A. 2 ʹࣔ͢ɽ͜ͷ࣮૷Ͱ͸·ͣอकతγϟυ΢Ϛο ཭ڑͷ௖఺͔Βରล·ͰͷܗϧγΣʔμʔͷ࣮ߦճ਺͕ଟ͘ͳͬͯ͠·͏ͱ͍͏໰ ϓʹ౤Өͨ͠ը૾ۭؒͰࡾ֯ TM ࢉ͠ɼܭ཭͸δΦϝτϦγΣʔμʔͰڑࢉ͢Δɽ͜ͷܭ୊͕͋ΔɽஶऀΒͷ࣋ͭ AMD Radeon RX Vega Λ ஋͕ϐΫηϧγΣʔμʔʹ౉͞ΕΔɽϐΫηͨؒ͠ิܗGPU Ͱ͸υϥΠόʔ͕·ͩରԠ͍ͯ͠ͳ͍ͨΊ͔ ઢ 56 ΑΓܘ཭͕ςΫηϧͷ֎઀ԁͷ൒ڑSV InnerCoverage ͕ਖ਼͘͠ಈ࡞͠ͳ͔ͬͨͷͰɼক ϧγΣʔμʔͰ͸͜ͷ Ͱ׬શʹ෴ܗདྷ SV Barycentrics Λ༻͍ͨຊ࿦จͷ࣮૷ͱͲͪΒ͕ ΋େ͖͍͔൱͔Λ൑ఆ͢Δ͜ͱʹΑͬͯࡾ֯ ߴ଎ʹಈ࡞͢Δ͔ݕূ͍͖͍ͯͨ͠ͱߟ͍͑ͯΔɽ ΘΕͨςΫηϧΛݕग़͢Δɽ

struct Output{ ँࣙ float4 p : SV_Position; float3 d : DISTANCE; ຊ࿦จͷϙϦΰϯϞσϧʹ͸ Marko Dabrovic ࢯͱ Frank }; [maxvertexcount(3)] 10),11) Meinl ࢯʹΑΔ Crytek Sponza Ϟσϧ ɼϊʔεΧϩϥ void main(triangle float4 inPos[3] : SV_Position, 12) inout TriangleStream output) { ;ΠφେֶʹΑΔ Power Plant Ϟσϧ ɼGuillermo M Leal float2 p0 = inPos[0].xy * g_smResolution 13) float2 p1 = inPos[1].xy * g_smResolution; LLaguno ࢯʹΑΔ San Miguel Ϟσϧ ɼͦͯ͠ kescha float2 p2 = inPos[2].xy * g_smResolution; 13) float2 e0 = p1 - p0; ࢯʹΑΔ Rungholt Ϟσϧ Λ࢖༻ͤͯ͞௖͍ͨɽϞσϧ float2 e1 = p2 - p1; float2 e2 = p0 - p2; ;((Δɽ float2 n0 = normalize(float2(-e0.y, e0.x͢ँײʹσʔλͷެ։ float2 n1 = normalize(float2(-e1.y, e1.x)); float2 n2 = normalize(float2(-e2.y, e2.x)); ;((ࢀߟจݙ float d0 = abs(dot(n1, e2 float d1 = abs(dot(n2, e0)); 1) C. Wyman, R. Hoetzlein, A. Lefohn: “Frustum-Traced Irregu- float d2 = abs(dot(n0, e1)); lar Z-Buffers: Fast, Sub-Pixel Accurate Hard Shadows”, IEEE Output element0 = { inPos[0], float3(d0, 0.0, 0.0) }; Output element1 = { inPos[1], float3(0.0, d1, 0.0) }; Trans. on Visualization and Computer Graphics, Vol. 22, No. Output element2 = { inPos[2], float3(0.0, 0.0, d2) }; 10, pp.2249–2261 (2016). output.Append(element0); output.Append(element1); 2) NVIDIA Corporation, NVIDIA Hybrid Frustum Traced Shad- output.Append(element2); ows, https://developer.nvidia.com/Hybrid-Frustum-Traced-S output.RestartStrip(); hadows (2018). } 3) J. Story, C. Wyman: “HFTS: Hybrid Frustum-Traced Shad- ows in “the Division””, Proc. of ACM SIGGRAPH 2016 Talks, ෇ਤ A. 1 Hertel Βͷอकతγϟυ΢ϚοϓͷδΦϝτϦ pp.13:1–13:2 (2016). γΣʔμʔʢHLSLʣ 4) L. Williams: “Casting Curved Shadows on Curved Surfaces”, app.Fig. 1 Geometry shader for Hertel et al.’s conser- vative shadow mapsʢHLSLʣ ACM SIGGRAPH Computer Graphics, Vol. 12, No. 3, pp.270– 274 (1978).

423 The Journal of the Institute of Image Electronics Engineers of Japan Vol.47 No.4 (2018) void main(float4 p : SV_Position, float3 d : DISTANCE) { float DIAG = 1.414213562373095; if (d.x < DIAG || d.y < DIAG || d.z < DIAG) { discard; } }

෇ਤ A. 2 Hertel Βͷอकతγϟυ΢ϚοϓͷϐΫηϧ γΣʔμʔʢHLSLʣ app.Fig. 2 Pixel shader for Hertel et al.’s conservative shadow mapsʢHLSLʣ

(2018 ೥ 7 ݄ 12 ೔ड෇)

ߔޱஐത ೥ 3 ݄ ࿨ՎࢁେֶେֶӃγεςϜ޻ֶݚ 2017 ࣜձࣾεΫ΢ΣΞɾΤג ݄ Պमྃɽಉ೥ 4ڀ χοΫεʹೖࣾʢάϥϑΟοΫεΤϯδχΞʣɽ ʹ։ൃڀϦΞϧλΠϜϨϯμϦϯάʹؔ͢Δݚ ैࣄɽ

٢༤հʢਖ਼ձһʣ℄ Պγεڀݚܥ೥ 3 ݄ ৴भେֶେֶӃ޻ֶ 2007 ՝ఔमྃɽത࢜ʢ޻ظޙςϜ։ൃ޻ֶઐ߈ത࢜ ࣜձࣾ೔ཱ੡࡞ॴγεςϜ։ג ݄ ʣɽಉ೥ 4ֶ һʣɽ࠷దԽίϯύΠϥͷݚڀॴೖࣾʢݚڀݚൃ ࣜձࣾεΫ΢Σג ݄ ։ൃʹैࣄɽ2010 ೥ 7ڀ ΞɾΤχοΫεೖࣾʢγχΞϦαʔνϟʔʣɽά ϩʔόϧΠϧϛωʔγϣϯΛத৺ʹϨϯμϦϯ ຯΛ࣋ͭɽڵʹάٕज़

424