プログラマブルシェーダの基本からディスプレイスメントマップの技法までを解説します
ShadingandLighting/BPNBTB.BUTVCBZBTIJ
View Slide
ࣗݾհ!GBEJT@দྛঘཧ
ຊͷલʹ
ϨϯμϦϯάύΠϓϥΠϯςΫενϟαϯϓϦϯάϑϨʔϜόοϑΝඳըཁٻϥελϥΠζϐΫηϧ୯Ґͷॲཧ୯Ґͷॲཧڽͬͨಈ͖Λѻ͍͍ͨڽ࣭ͬͨײΛѻ͍͍ͨ
ϓϩάϥϚϒϧγΣʔμςΫενϟαϯϓϦϯάϑϨʔϜόοϑΝඳըཁٻϥελϥΠζϐΫηϧ୯Ґͷॲཧ୯Ґͷॲཧ͜ͷ෦Ͱ࣮ࡍʹߦ͏ॲཧΛϢʔβ͕ϓϩάϥϜͰ͖ΔΑ͏ʹͨ͠γΣʔμϑϥάϝϯτγΣʔμ
γΣʔσΟϯάݴޠϋʔυΣΞݻ༗ͷϚγϯޠϋʔυΣΞݻ༗ͷΞηϯϒϦ%JSFDU90QFO(-$H5PPMLJU(-4-$H)-4-ߴڃݴޠ
ϨΠτϨʔεݻఆػೳγΣʔμେࡶ͍ਖ਼͍֬ϓϩάϥϚϒϧγΣʔμͰ࡞ͬͨͩ͜ΘΓͷԶγΣʔμγΣʔσΟϯάޫͷͨͬͯΔମʹͦΕͬΆ͍໌Δ͞ͷڧऑΛ͚ͭΔ
جຊతͳϥΠςΟϯάϞσϧڥޫ ֦ࢄޫ ࣹޫ
ڥޫ֦ࢄޫࣹޫఆͰ͍͍EPU ޫͷํ ໘ͷ๏ઢཁ͢Δʹޫͷํ͍ͯΔSFGSFqFDU ޫͷํ ໘ͷ๏ઢQPX EPU ࢹͷํ SFG ޫͷڧ͞ޫͷࣹ͕ࢹͷํ͍ͯΔ
҉͍ͦͦ͜͜໌Δ͍ઢܗิؒઢܗิؒઢܗิؒ
ݻఆػೳγΣʔμͱಉਫ४ͷγΣʔσΟϯάΛͬͯΈΔ
WPJEHPVSBVE7FSUFY4IBEFS qPBUMPDBM@QPTJUJPO"553 qPBUMPDBM@OPSNBM"553 qPBUMPDBM@UFYDPPSE"553 PVUqPBUWJFX@QPTJUJPO104*5*0/ PVUqPBUXPSME@DPMPS$0-03 PVUqPBUXPSME@UFYDPPSE5&9$003%\qPBUXPSME@QPTJUJPONVM HMTUBUFNBUSJYNPEFMWJFX<> MPDBM@QPTJUJPOWJFX@QPTJUJPONVM HMTUBUFNBUSJYQSPKFDUJPO XPSME@QPTJUJPOqPBUXPSME@OPSNBMOPSNBMJ[F NVM qPBUYHMTUBUFNBUSJYNPEFMWJFX<> MPDBM@OPSNBMXPSME@OPSNBMOPSNBMJ[F XPSME@OPSNBM!qPBUXPSME@FZFEJSDBNFSB@QPTJUJPOXPSME@QPTJUJPOYZ[qPBUXPSME@MJHIUEJSHMTUBUFMJHIU<>QPTJUJPOYZ[XPSME@QPTJUJPOYZ[qPBUXPSME@MJHIUEJS@OPSNBMJ[FEOPSNBMJ[F XPSME@MJHIUEJSqPBUXPSME@FZFEJS@OPSNBMJ[FEOPSNBMJ[F XPSME@FZFEJSqPBUEJ⒎VTF@MJHIU@MFWFMNBY EPU XPSME@OPSNBM XPSME@MJHIUEJS@OPSNBMJ[FE qPBUXPSME@SFqFDUJPOSFqFDU XPSME@MJHIUEJS@OPSNBMJ[FE XPSME@OPSNBMqPBUTQFDVMBS@MJHIU@MFWFMQPX NBY EPU XPSME@FZFEJS@OPSNBMJ[FE XPSME@SFqFDUJPO JG EJ⒎VTF@MJHIU@MFWFM\TQFDVMBS@MJHIU@MFWFM^qPBUMJHIU@EJTUBODFGPH@EJTUBODFQPX MFOHUI XPSME@MJHIUEJS qPBUMJHIU@MFWFMBNCJFOU@MJHIUNJO EJ⒎VTF@MJHIU@MFWFM MJHIU@EJTUBODFTQFDVMBS@MJHIU@MFWFMMJHIU@EJTUBODF!qPBUpOBM@DPMPSqPBU MJHIU@MFWFMXPSME@DPMPSqPBU pOBM@DPMPS !XPSME@UFYDPPSEMPDBM@UFYDPPSE^࠲ඪมϥΠςΟϯάάʔϩʔγΣʔσΟϯά
XPSME@OPSNBMOPSNBMJ[F XPSME@OPSNBMqPBUXPSME@FZFEJSDBNFSB@QPTJUJPOXPSME@QPTJUJPOYZ[qPBUXPSME@MJHIUEJSHMTUBUFMJHIU<>QPTJUJPOYZ[XPSME@QPTJUJPOYZ[qPBUXPSME@MJHIUEJS@OPSNBMJ[FEOPSNBMJ[F XPSME@MJHIUEJSqPBUXPSME@FZFEJS@OPSNBMJ[FEOPSNBMJ[F XPSME@FZFEJSqPBUEJ⒎VTF@MJHIU@MFWFMNBY EPU XPSME@OPSNBM XPSME@MJHIUEJS@OPSNBMJ[FE qPBUXPSME@SFqFDUJPOSFqFDU XPSME@MJHIUEJS@OPSNBMJ[FE XPSME@OPSNBMqPBUTQFDVMBS@MJHIU@MFWFMQPX NBY EPU XPSME@FZFEJS@OPSNBMJ[FE XPSME@SFqFDUJPO JG EJ⒎VTF@MJHIU@MFWFM\TQFDVMBS@MJHIU@MFWFM^qPBUMJHIU@EJTUBODFGPH@EJTUBODFQPX MFOHUI XPSME@MJHIUEJS qPBUMJHIU@MFWFMBNCJFOU@MJHIUNJO EJ⒎VTF@MJHIU@MFWFM MJHIU@EJTUBODFTQFDVMBS@MJHIU@MFWFMMJHIU@EJTUBODF֦ࢄޫࣹޫάʔϩʔγΣʔσΟϯά
WPJEHPVSBVE'SBHNFOU4IBEFS qPBUXPSME@UFYDPPSE5&9$003% qPBUXPSME@DPMPS$0-03 PVUqPBUQJYFM@DPMPS$0-03\QJYFM@DPMPSXPSME@DPMPS^άʔϩʔγΣʔσΟϯάγΣʔμͰܾΊͨ৭ͰృΔ
λϯΫ͞Μͬͦ͘͜͞ͷγΣʔμΛࢼͯ͠ΈΔ
ཧ ݱ࣮ࣹޫ͕ਖ਼͘͠ඳ͔Ε͍ͯͳ͍
໌҉ຖʹग़ྗ͞ΕͨϥελϥΠζ࣌ʹઢܗิؒ͞ΕͯϑϥάϝϯτγΣʔμʹ͞ΕΔ֦ࢄޫ"#
ઢܗิؒ҉҉ࣹޫ"#୯Ґʹܭࢉ͢Δ͔Β·͍ͣϐΫηϧ୯ҐͰܭࢉ͢Ε͍͍
͏গ͠ϚγͳγΣʔσΟϯάΛͬͯΈΔ
WPJEQIPOH7FSUFY4IBEFS qPBUMPDBM@QPTJUJPO"553 qPBUMPDBM@OPSNBM"553 qPBUMPDBM@UFYDPPSE"553 PVUqPBUWJFX@QPTJUJPO104*5*0/ PVUqPBUXPSME@QPTJUJPO5&9$003% PVUqPBUXPSME@OPSNBM5&9$003%\XPSME@QPTJUJPONVM HMTUBUFNBUSJYNPEFMWJFX<> MPDBM@QPTJUJPOWJFX@QPTJUJPONVM HMTUBUFNBUSJYQSPKFDUJPO XPSME@QPTJUJPOXPSME@OPSNBMOPSNBMJ[F NVM qPBUYHMTUBUFNBUSJYNPEFMWJFX<> MPDBM@OPSNBM^ϑΥϯγΣʔσΟϯά࠲ඪม๏ઢΛग़ྗ
WPJEQIPOH'SBHNFOU4IBEFS qPBUXPSME@QPTJUJPO5&9$003% qPBUXPSME@OPSNBM5&9$003% PVUqPBUQJYFM@DPMPS$0-03\XPSME@OPSNBMOPSNBMJ[F XPSME@OPSNBMqPBUXPSME@FZFEJSDBNFSB@QPTJUJPOXPSME@QPTJUJPOYZ[qPBUXPSME@MJHIUEJSHMTUBUFMJHIU<>QPTJUJPOYZ[XPSME@QPTJUJPOYZ[qPBUXPSME@MJHIUEJS@OPSNBMJ[FEOPSNBMJ[F XPSME@MJHIUEJSqPBUXPSME@FZFEJS@OPSNBMJ[FEOPSNBMJ[F XPSME@FZFEJS!qPBUEJ⒎VTF@MJHIU@MFWFMNBY EPU XPSME@OPSNBM XPSME@MJHIUEJS@OPSNBMJ[FE qPBUXPSME@SFqFDUJPOSFqFDU XPSME@MJHIUEJS@OPSNBMJ[FE XPSME@OPSNBMqPBUTQFDVMBS@MJHIU@MFWFMQPX NBY EPU XPSME@FZFEJS@OPSNBMJ[FE XPSME@SFqFDUJPO JG EJ⒎VTF@MJHIU@MFWFM\TQFDVMBS@MJHIU@MFWFM^qPBUMJHIU@EJTUBODFGPH@EJTUBODFQPX MFOHUI XPSME@MJHIUEJS qPBUMJHIU@MFWFMBNCJFOU@MJHIUNJO EJ⒎VTF@MJHIU@MFWFM MJHIU@EJTUBODFTQFDVMBS@MJHIU@MFWFMMJHIU@EJTUBODFqPBUpOBM@DPMPSqPBU MJHIU@MFWFMQJYFM@DPMPSqPBU pOBM@DPMPS ^ϑΥϯγΣʔσΟϯάϥΠςΟϯά
qPBUEJ⒎VTF@MJHIU@MFWFMNBY EPU XPSME@OPSNBM XPSME@MJHIUEJS@OPSNBMJ[FE qPBUXPSME@SFqFDUJPOSFqFDU XPSME@MJHIUEJS@OPSNBMJ[FE XPSME@OPSNBMqPBUTQFDVMBS@MJHIU@MFWFMQPX NBY EPU XPSME@FZFEJS@OPSNBMJ[FE XPSME@SFqFDUJPO JG EJ⒎VTF@MJHIU@MFWFM\TQFDVMBS@MJHIU@MFWFM^qPBUMJHIU@EJTUBODFGPH@EJTUBODFQPX MFOHUI XPSME@MJHIUEJS qPBUMJHIU@MFWFMBNCJFOU@MJHIUNJO EJ⒎VTF@MJHIU@MFWFM MJHIU@EJTUBODFTQFDVMBS@MJHIU@MFWFMMJHIU@EJTUBODFϑΥϯγΣʔσΟϯά֦ࢄޫࣹޫ
"#๏ઢΛઢܗิ֤ؒϐΫηϧͰͷ๏ઢΛͬͯ໌Δ͞Λܾఆ
ϑΥϯγΣʔσΟϯά
๏ઢΛઢܗิؒ͡Όͳͯͬ͘ͱࡉ͔͘ಈ͔ͯ͠ΈΔ
࣮ࡍʹ໘ΛԜತͤ͞ͳͯ͘Ԝತ͍ͯ͠Δ͔ͷΑ͏ͳ༷͕ग़Δ
ִؒΑΓࡉ͔͘໘ʹΛׂΓ͍ͯͨ๏ઢϚοϓ ςΫενϟϚοϐϯάςΫενϟʹ৭Ͱͳ͘๏ઢͷ͖Λه͓ͯ͘͠
ߴ͞Ϛοϓന͍ͱ͜Ζߴ͍ࠇ͍ͱ͜Ζ͍
ߴ͞Ϛοϓ͔Β๏ઢϚοϓΛ࡞ΔT 㲅I㲅YU 㲅I㲅ZOOPSNBMJ[F DSPTT T U
ςΫενϟඞͣ͠ඳ͔Ε͖ͨͰදࣔ͞ΕΔͱݶΒͳ͍Ͳ͏͍͏͖Ͱஔ͞Ε͍ͯΑ͏͕৭͍͕৭ͳͷมΘΒͳ͍
ςΫενϟඞͣ͠ඳ͔Ε͖ͨͰදࣔ͞ΕΔͱݶΒͳ͍๏ઢϚοϓมܗ͢Δͱҙຯ͕มΘͬͯ͠·͏ςΫενϟͷҰॹ͚ͩͲ͖͘͠ͳ͍
ςΫενϟ͕มܗ͠ͳ͚Ε؆୯ͳͷʹมܗ͍ͯ͠ͳ͍͜ͱʹͯ͠͠·͓͏
Ώ͕Μͩܗঢ়ͷମʹ·͙ͬ͢ޫ͕͍ͨͬͯͯͦΕΛ·͙ͬ͢ࢹ͔Βݟ͍ͯΔ࣍ݩͷฏΒͳମʹΏ͕Μͩޫ͕͍ͨͬͯͯͦΕΛΏ͕Μͩࢹ͔Βݟ͍ͯΔςΫενϟ
ମʹςΫενϟ͕షΕ͍ͯΔͱ͍͏͜ͱશͯͷϫʔϧυۭؒʹ͓͚Δ࣍ݩ࠲ඪͱςΫενϟۭؒʹ͓͚Δ࣍ݩ࠲ඪ͔ΒͳΔ࣍ݩۭؒͷҰҙͳͰ͋Δ͜͜͜͜ϫʔϧυۭؒ ςΫενϟۭؒYZ[ TU
࣍ݩ্ۭؒͷҙͷଟ໘ମΛYZ[࣠ʹ͍ͭͯӨͨ͠ͷ͕ࠨͷਤTU࣠ʹ͍ͭͯʹӨͨ͠ͷ͕ӈͷਤϫʔϧυۭؒ ςΫενϟۭؒYZ[ TU
ϫʔϧυۭؒ ςΫενϟۭؒීஈͬͪ͜Ͱܭࢉ͍ͯ͠Δ͚ͲςΫενϟ͕มܗ͢Δͱ߹͕ѱ͍͔Βͬͪ͜Ͱܭࢉ͢ΔϫʔϧυۭؒͰఆٛ͞Ε͍ͯΔࢹͱޫͷҐஔΛςΫενϟۭؒʹม͢Δඞཁ͕͋ΔYZ[ TU
ϫʔϧυۭ͔ؒΒςΫενϟۭؒͷมઢܗͷ࠲ඪมߦྻͰͰ͖Δ<><><>ϞσϧϏϡʔߦྻϩʔΧϧ࠲ඪϫʔϧυ࠲ඪYZ[XYZ[XϞσϧҙܗঢ় ඇઢܗͷ࠲ඪมຖʹҐஔͱςΫενϟ࠲ඪͷؔΛද͢ߦྻΛ࡞ΔϦΞϧλΠϜ%Ͱඇઢܗʹૺ۰ͨ͠Βࡉ͔۠ͬͯ͘ઢܗۙࣅ
ϫʔϧυۭ͔ؒΒςΫενϟۭؒͷมϫʔϧυ࠲ඪܥ͔ΒςΫενϟ࠲ඪܥͷมߦྻͷٻΊํWWWSYYZ[WYTUWYTUSYYZ[WYTUWYTUYDPFGYZ[DSPTT SYYZ[ SYYZ[UYYDPFGZYDPFGYSZYZ[WZTUWZTUSZYZ[WZTUWZTUZDPFGYZ[DSPTT SZYZ[ SZYZ[UZZDPFGZZDPFGYSYZ[W[TUW[TUSYZ[W[TUW[TU[DPFGYZ[DSPTT S[YZ[ S[YZ[U[[DPFGZ[DPFGYUOPSNBMJ[F UWʹ͓͚ΔઢϕΫτϧUΛٻΊΔٙࣅίʔυ
ϫʔϧυۭ͔ؒΒςΫενϟۭؒͷมʹ༩͑ΒΕͨ๏ઢ͠͠໘ͱߦ͍ͯ͠ͳ͍Wͷ๏ઢ Wͷ๏ઢWͷ๏ઢOOOPSNBMJ[F OCDSPTT OO UUDSPTT C OOઌ΄ͲٻΊͨઢUΛWͷ๏ઢOͱߦ͢ΔΑ͏ʹิਖ਼͢Δ໘ͷ๏ઢ͜ͷܭࢉͰߦྻͷߏஙʹඞཁͳ̏ຊͷϕΫτϧ४๏ઢCٻ·Δ͕ͷଐੑͷ࠷େݶΒΕ͍ͯΔͷͰ๏ઢͱઢ͔ΒٻΊΒΕΔ४๏ઢࠓࣺͯΔ
ϫʔϧυۭ͔ؒΒςΫενϟۭؒͷมҰ࿈ͷܭࢉδΦϝτϦγΣʔμ͕͑Δ߹(16ଆͰΔͱΧοί͍͍͔
ϫʔϧυۭ͔ؒΒςΫενϟۭؒͷมY[ZઢܗิؒઢܗิؒTSU
WPJEQIPOH7FSUFY4IBEFS qPBUMPDBM@QPTJUJPO"553 qPBUMPDBM@OPSNBM"553 qPBUMPDBM@UFYDPPSE"553 qPBUMPDBM@UBOHFOU"553 PVUqPBUWJFX@QPTJUJPO104*5*0/ PVUqPBUXPSME@QPTJUJPO5&9$003% PVUqPBUXPSME@UFYDPPSE5&9$003% PVUqPBUXPSME@OPSNBM5&9$003% PVUqPBUXPSME@UBOHFOU5&9$003%\XPSME@QPTJUJPONVM HMTUBUFNBUSJYNPEFMWJFX<> MPDBM@QPTJUJPOWJFX@QPTJUJPONVM HMTUBUFNBUSJYQSPKFDUJPO XPSME@QPTJUJPOXPSME@OPSNBMOPSNBMJ[F NVM qPBUYHMTUBUFNBUSJYNPEFMWJFX<> MPDBM@OPSNBMXPSME@UBOHFOUOPSNBMJ[F NVM qPBUYHMTUBUFNBUSJYNPEFMWJFX<> MPDBM@UBOHFOUXPSME@UFYDPPSEMPDBM@UFYDPPSE^ςΫενϟۭؒͰϑΥϯγΣʔσΟϯάU࣠ํͷઢ
WPJEQIPOH'SBHNFOU4IBEFS qPBUXPSME@UFYDPPSE5&9$003% qPBUXPSME@QPTJUJPO5&9$003% qPBUXPSME@OPSNBM5&9$003% qPBUXPSME@UBOHFOU5&9$003% PVUqPBUQJYFM@DPMPS$0-03\XPSME@OPSNBMOPSNBMJ[F XPSME@OPSNBMXPSME@UBOHFOUOPSNBMJ[F XPSME@UBOHFOUqPBUXPSME@CJOPSNBMDSPTT XPSME@UBOHFOU XPSME@OPSNBMqPBUYXPSME@UP@UFYUVSFqPBUY XPSME@UBOHFOU XPSME@CJOPSNBM XPSME@OPSNBM!qPBUXPSME@FZFEJSDBNFSB@QPTJUJPOXPSME@QPTJUJPOYZ[qPBUUFYUVSF@FZFEJSNVM XPSME@UP@UFYUVSF XPSME@FZFEJS!qPBUXPSME@MJHIUEJSHMTUBUFMJHIU<>QPTJUJPOYZ[XPSME@QPTJUJPOYZ[qPBUUFYUVSF@MJHIUEJSNVM XPSME@UP@UFYUVSF XPSME@MJHIUEJS!qPBUUFYUVSF@OPSNBMqPBU qPBUUFYUVSF@MJHIUEJS@OPSNBMJ[FEOPSNBMJ[F UFYUVSF@MJHIUEJS!qPBUEJ⒎VTF@MJHIU@MFWFMNBY EPU UFYUVSF@OPSNBM UFYUVSF@MJHIUEJS@OPSNBMJ[FE !qPBUUFYUVSF@FZFEJS@OPSNBMJ[FEOPSNBMJ[F UFYUVSF@FZFEJSqPBUUFYUVSF@SFqFDUJPOSFqFDU UFYUVSF@MJHIUEJS@OPSNBMJ[FE UFYUVSF@OPSNBMqPBUTQFDVMBS@MJHIU@MFWFMQPX NBY EPU UFYUVSF@FZFEJS@OPSNBMJ[FE UFYUVSF@SFqFDUJPO JG EJ⒎VTF@MJHIU@MFWFM\TQFDVMBS@MJHIU@MFWFM^!qPBUMJHIU@EJTUBODFGPH@EJTUBODFQPX MFOHUI XPSME@MJHIUEJS qPBUMJHIU@MFWFMBNCJFOU@MJHIUNJO EJ⒎VTF@MJHIU@MFWFM MJHIU@EJTUBODFTQFDVMBS@MJHIU@MFWFMMJHIU@EJTUBODFqPBUpOBM@DPMPSqPBU MJHIU@MFWFMQJYFM@DPMPSqPBU pOBM@DPMPS ^ςΫενϟۭؒͰϑΥϯγΣʔσΟϯάςΫενϟۭؒͷมߦྻͷΈཱͯࢹͷ࠲ඪมޫͷ࠲ඪมϥΠςΟϯά
XPSME@OPSNBMOPSNBMJ[F XPSME@OPSNBMXPSME@UBOHFOUOPSNBMJ[F XPSME@UBOHFOUqPBUXPSME@CJOPSNBMDSPTT XPSME@UBOHFOU XPSME@OPSNBMqPBUYXPSME@UP@UFYUVSFqPBUY XPSME@UBOHFOU XPSME@CJOPSNBM XPSME@OPSNBMςΫενϟۭؒͰϑΥϯγΣʔσΟϯά๏ઢͱઢ͔ΒT࣠ํͷઢ४๏ઢΛٻΊͯߦྻʹ͢Δ
qPBUXPSME@FZFEJSDBNFSB@QPTJUJPOXPSME@QPTJUJPOYZ[qPBUUFYUVSF@FZFEJSNVM XPSME@UP@UFYUVSF XPSME@FZFEJS!qPBUXPSME@MJHIUEJSHMTUBUFMJHIU<>QPTJUJPOYZ[XPSME@QPTJUJPOYZ[qPBUUFYUVSF@MJHIUEJSNVM XPSME@UP@UFYUVSF XPSME@MJHIUEJSςΫενϟۭؒͰϑΥϯγΣʔσΟϯά͜ͷϐΫηϧͷҐஔ͔Βݟͨࢹͷ͖ΛςΫενϟۭؒʹมಉ͘͡ޫͷ͖ΛςΫενϟۭؒʹม
qPBUUFYUVSF@OPSNBMqPBU ςΫενϟۭؒͰϑΥϯγΣʔσΟϯάςΫενϟۭؒʹ͓͚ΔϞσϧฏΒͳฏ໘ͳͷͰ໘ͷ๏ઢৗʹS࣠ํΛ͍͍ͯΔ
qPBUEJ⒎VTF@MJHIU@MFWFMNBY EPU UFYUVSF@OPSNBM UFYUVSF@MJHIUEJS@OPSNBMJ[FE !qPBUUFYUVSF@FZFEJS@OPSNBMJ[FEOPSNBMJ[F UFYUVSF@FZFEJSqPBUUFYUVSF@SFqFDUJPOSFqFDU UFYUVSF@MJHIUEJS@OPSNBMJ[FE UFYUVSF@OPSNBMqPBUTQFDVMBS@MJHIU@MFWFMQPX NBY EPU UFYUVSF@FZFEJS@OPSNBMJ[FE UFYUVSF@SFqFDUJPO JG EJ⒎VTF@MJHIU@MFWFM\TQFDVMBS@MJHIU@MFWFM^!qPBUMJHIU@EJTUBODFGPH@EJTUBODFQPX MFOHUI XPSME@MJHIUEJS qPBUMJHIU@MFWFMBNCJFOU@MJHIUNJO EJ⒎VTF@MJHIU@MFWFM MJHIU@EJTUBODFTQFDVMBS@MJHIU@MFWFMMJHIU@EJTUBODFςΫενϟۭؒͰϑΥϯγΣʔσΟϯά͋ͱ͍ͭ௨ΓͷϥΠςΟϯά
ϫʔϧυۭؒͰϑΥϯγΣʔσΟϯάςΫενϟۭؒͰϑΥϯγΣʔσΟϯά
qPBUUFYUVSF@OPSNBMqPBU ςΫενϟۭؒͰͷ๏ઢ͕๏ઢϚοϓʹه͞Ε͍ͯΔqPBUUFYUVSF@OPSNBM@EUFY% OPSNBM@NBQ XPSME@UFYDPPSESHqPBUUFYUVSF@OPSNBMOPSNBMJ[F qPBU UFYUVSF@OPSNBM@E TRSU UFYUVSF@OPSNBM@EYUFYUVSF@OPSNBM@EYUFYUVSF@OPSNBM@EZUFYUVSF@OPSNBM@EZ
όϯϓϚοϐϯάCFGPSF BGUFS
໌҉͚ͩ͡Όͳͯ͘ຊʹԜತͤͯ͞ΈΔ
ߴ͞Ϛοϓ๏ઢϚοϓ"#ϨϦʔϑϚοϓ
͜͜Λ͔ͨͬͺ͔͡ΒௐΔߴ͞Ϛοϓ"##ͷҐஔΛٻΊΔ࠷؆୯ͳํ๏"͔Βઢܗ୳ࡧͰߴ͞Ϛοϓͷ͕ͦͷҐஔͰͷࢹઢϕΫτϧͷߴ͞ΑΓߴ͍ՕॴΛ୳͍͢ϨϦʔϑϚοϓ
ߴ͞Ϛοϓःณ͕ແ͍͜ͱ͕อূ͞Ε͍ͯΔԁਲ਼ྖҬͷେ͖͞ΛٻΊ͓ͯ͘͜͜·ͰͳΒେৎίʔϯεςοϓϚοϓ
ߴ͞Ϛοϓൺֱతগͳ͍ճͰ#ʹۙ͘͜ͱ͕Ͱ͖Δ#ίʔϯεςοϓϚοϓ
ίʔϯεςοϓϚοϓόϯϓϚοϓͰͬͨ๏ઢϚοϓͷ༻͍ͯ͠ͳ͍੨ͷ෦ʹίʔϯεςοϓϚοϓΛه͢Δ
qPBUESJGU1PTJUJPO qPBUUFYUVSF@SBZ@QPT qPBUUFYUVSF@SBZ@EJS\DPOTUJOUDPOF@TUFQTDPOTUJOUCJOBSZ@TUFQTUFYUVSF@SBZ@EJS[OPSNBM@EFQUIUFYUVSF@SBZ@EJSUFYUVSF@SBZ@EJS[qPBUSBZ@SBUJPMFOHUI UFYUVSF@SBZ@EJSYZqPBUUFYUVSF@DVSSFOU@QPTJUJPOUFYUVSF@SBZ@QPTGPS JOUJJDPOF@TUFQTJ\qPBUNBQ@WBMVFUFY% OPSNBM@NBQ UFYUVSF@DVSSFOU@QPTJUJPOYZqPBUDPOF@SBUJPNBQ@WBMVFCqPBUIFJHIUTBUVSBUF NBQ@WBMVFBUFYUVSF@DVSSFOU@QPTJUJPO[qPBUBEWBODFDPOF@SBUJPIFJHIU SBZ@SBUJPDPOF@SBUJPUFYUVSF@DVSSFOU@QPTJUJPOUFYUVSF@SBZ@EJSBEWBODF^qPBUCJOBSZ@TFBSDI@SBOHFUFYUVSF@SBZ@EJSUFYUVSF@DVSSFOU@QPTJUJPO[qPBUCJOBSZ@TFBSDI@QPTJUJPOUFYUVSF@SBZ@QPTCJOBSZ@TFBSDI@SBOHFGPS JOUDPVOUDPVOUCJOBSZ@TUFQTDPVOU\qPBUNBQ@WBMVFUFY% OPSNBM@NBQ CJOBSZ@TFBSDI@QPTJUJPOYZCJOBSZ@TFBSDI@SBOHFJG CJOBSZ@TFBSDI@QPTJUJPO[NBQ@WBMVFBCJOBSZ@TFBSDI@QPTJUJPOCJOBSZ@TFBSDI@SBOHFFMTFCJOBSZ@TFBSDI@QPTJUJPOCJOBSZ@TFBSDI@SBOHF^SFUVSOCJOBSZ@TFBSDI@QPTJUJPO^ίʔϯεςοϓϚοϓίʔϯΛ୧Δೋ୳ࡧͰඍௐ
ίʔϯεςοϓϚοϓCFGPSF BGUFS
ޫͷ͋Δ໘Λඳ͍ͯΈΔ
ମ͕Ͱ͋Δͱ͢ΔͱແࢹͰ͖ΔࣹʹΑͬͯݟ͑ΔͷΛܾఆ͢Δཁૉࢹ໘ͷ๏ઢࢹઢͱ໘ͷަࠩ͢Δ
ମ͕Ͱ͋Δͱ͢Δͱࣹͨ͠ࢹઢৗʹ͋ΔҰ͔ΒͷϕΫτϧʹͳΔ͜ͷΛத৺ʹશํҐʹͲΜͳ৭͕͍ͯ͠Δ͔ΛٻΊΔڥϚοϓ
ΩϡʔϒϚοϓٿ໘ʹԊͬͯϨϯμϦϯάΛ͢ΔͱӨߦྻ͕ඇઢܗʹͳΔͷͰɺཱํମͰ༻͢ΔͷҐஔ͔Βݟཱͯํମͷ֤໘ͷํʹݟ͑Δ૾ΛςΫενϟʹϨϯμϦϯά͓ͯ͘͠ຕͷςΫενϟΛுΓ߹Θͤͯࢀর͢ΔΈ(16ʹ༻ҙ͞Ε͍ͯΔͷͰԕྀͳ͘͏
ΩϡʔϒϚοϓ
WPJEFOWJSPONFOU'SBHNFOU4IBEFS qPBUXPSME@UFYDPPSE5&9$003% qPBUXPSME@QPTJUJPO5&9$003% qPBUXPSME@OPSNBM5&9$003% PVUqPBUQJYFM@DPMPS$0-03\XPSME@OPSNBMOPSNBMJ[F XPSME@OPSNBM!qPBUXPSME@FZFEJSDBNFSB@QPTJUJPOXPSME@QPTJUJPOYZ[!qPBUXPSME@MJHIUEJSHMTUBUFMJHIU<>QPTJUJPOYZ[XPSME@QPTJUJPOYZ[!qPBUXPSME@MJHIUEJS@OPSNBMJ[FEOPSNBMJ[F XPSME@MJHIUEJS!qPBUEJ⒎VTF@MJHIU@MFWFMNBY EPU XPSME@OPSNBM XPSME@MJHIUEJS@OPSNBMJ[FE !qPBUXPSME@FZFEJS@OPSNBMJ[FEOPSNBMJ[F XPSME@FZFEJSqPBUXPSME@SFqFDUJPOSFqFDU XPSME@MJHIUEJS@OPSNBMJ[FE XPSME@OPSNBMqPBUTQFDVMBS@MJHIU@MFWFMQPX NBY EPU XPSME@FZFEJS@OPSNBMJ[FE XPSME@SFqFDUJPO JG EJ⒎VTF@MJHIU@MFWFM\EJ⒎VTF@MJHIU@MFWFMTQFDVMBS@MJHIU@MFWFM^qPBUFOWJSPONFOU@DPMPSUFY$6#& DVCF@NBQ SFqFDU XPSME@FZFEJS XPSME@OPSNBM!qPBUMJHIU@EJTUBODFGPH@EJTUBODFQPX MFOHUI XPSME@MJHIUEJS qPBUMJHIU@MFWFMNJO EJ⒎VTF MJHIU@MFOHUITQFDVMBS@MJHIU@MFWFMMJHIU@EJTUBODFqPBUpOBM@DPMPSFOWJSPONFOU@DPMPSSHCqPBU MJHIU@MFWFMQJYFM@DPMPSqPBU pOBM@DPMPS ^ڥϚοϓqPBUFOWJSPONFOU@DPMPSUFY$6#& DVCF@NBQ SFqFDU XPSME@FZFEJS XPSME@OPSNBMࢹϕΫτϧΛ๏ઢͰࣹͤͨ͞ઌʹ͋ΔΩϡʔϒϚοϓͷΛͱΔ
ڥϚοϓ
ޫͷ͋ΔತԜͨ͠໘Λඳ͍ͯΈΔ
ڥϚοϓͱϨϦʔϑϚοϓΛΈ߹ΘͤΔϨϦʔϑϚοϓςΫενϟۭؒͰܭࢉ͞Ε͍ͯΔ๏ઢςΫενϟۭؒͰͷΩϡʔϒϚοϓϫʔϧυۭؒͰܭࢉ͞Ε͍ͯΔϫʔϧυۭؒͰͷ๏ઢ͕ඞཁςΫενϟۭ͔ؒΒϫʔϧυۭؒͷߦྻ͕ඞཁϫʔϧυۭ͔ؒΒςΫενϟۭؒͷߦྻਖ਼نԽ͞ΕͨճసߦྻͳͷͰసஔ͢Δ͚ͩͰٯߦྻ͕ಘΒΕΔ
ڥϚοϓͱϨϦʔϑϚοϓΛΈ߹ΘͤΔWPJESFMJFG&OWJSPONFOU'SBHNFOU4IBEFS qPBUXPSME@UFYDPPSE5&9$003% qPBUXPSME@QPTJUJPO5&9$003% qPBUXPSME@OPSNBM5&9$003% qPBUXPSME@UBOHFOU5&9$003% PVUqPBUQJYFM@DPMPS$0-03\XPSME@OPSNBMOPSNBMJ[F XPSME@OPSNBMXPSME@UBOHFOUOPSNBMJ[F XPSME@UBOHFOUqPBUXPSME@CJOPSNBMOPSNBMJ[F DSPTT XPSME@OPSNBM XPSME@UBOHFOUqPBUYXPSME@UP@UFYUVSFqPBUY XPSME@UBOHFOU XPSME@CJOPSNBM XPSME@OPSNBMqPBUYUFYUVSF@UP@XPSMEUSBOTQPTF XPSME@UP@UFYUVSF!qPBUXPSME@FZFEJSDBNFSB@QPTJUJPOXPSME@QPTJUJPOYZ[qPBUUFYUVSF@FZFEJSNVM XPSME@UP@UFYUVSF XPSME@FZFEJS!qPBUXPSME@MJHIUEJSHMTUBUFMJHIU<>QPTJUJPOYZ[XPSME@QPTJUJPOYZ[qPBUUFYUVSF@MJHIUEJSNVM XPSME@UP@UFYUVSF XPSME@MJHIUEJS!qPBUXPSME@ESJGUFE@UFYDPPSEESJGU1PTJUJPO qPBU XPSME@UFYDPPSE OPSNBMJ[F UFYUVSF@FZFEJSqPBUXPSME@SBZ@FOUSZ@QPTHFU-JHIU&OUSZ1PTJUJPO XPSME@ESJGUFE@UFYDPPSE OPSNBMJ[F UFYUVSF@MJHIUEJSqPBUXPSME@MJHIU@ESJGUFE@QPTESJGU1PTJUJPO XPSME@SBZ@FOUSZ@QPT OPSNBMJ[F UFYUVSF@MJHIUEJSqPBUUFYUVSF@OPSNBM@EUFY% OPSNBM@NBQ XPSME@ESJGUFE@UFYDPPSEYZSHqPBUUFYUVSF@OPSNBMOPSNBMJ[F qPBU UFYUVSF@OPSNBM@E TRSU UFYUVSF@OPSNBM@EYUFYUVSF@OPSNBM@EYUFYUVSF@OPSNBM@EZUFYUVSF@OPSNBM@EZ!qPBUUFYUVSF@MJHIUEJS@OPSNBMJ[FEOPSNBMJ[F UFYUVSF@MJHIUEJS!qPBUEJ⒎VTF@MJHIU@MFWFMNBY EPU UFYUVSF@OPSNBM UFYUVSF@MJHIUEJS@OPSNBMJ[FE !qPBUUFYUVSF@FZFEJS@OPSNBMJ[FEOPSNBMJ[F UFYUVSF@FZFEJSqPBUUFYUVSF@SFqFDUJPOSFqFDU UFYUVSF@MJHIUEJS@OPSNBMJ[FE UFYUVSF@OPSNBMqPBUTQFDVMBS@MJHIU@MFWFMQPX NBY EPU UFYUVSF@FZFEJS@OPSNBMJ[FE UFYUVSF@SFqFDUJPO JG EJ⒎VTF@MJHIU@MFWFM\TQFDVMBS@MJHIU@MFWFM^!XPSME@OPSNBMNVM UFYUVSF@UP@XPSME UFYUVSF@OPSNBMqPBUFOWJSPONFOU@DPMPSUFY$6#& DVCF@NBQ SFqFDU XPSME@FZFEJS XPSME@OPSNBM!qPBUMJHIU@EJTUBODFGPH@EJTUBODFQPX MFOHUI XPSME@MJHIUEJS qPBUTIBEPX@MFWFMNJO MFOHUI XPSME@MJHIU@ESJGUFE@QPTXPSME@ESJGUFE@UFYDPPSE qPBUMJHIU@MFWFMBNCJFOU@MJHIUTQFDVMBS@MJHIU@MFWFMTIBEPX@MFWFMMJHIU@EJTUBODFqPBUpOBM@DPMPSFOWJSPONFOU@DPMPSSHCqPBU MJHIU@MFWFMQJYFM@DPMPSqPBU pOBM@DPMPS ^qPBUYUFYUVSF@UP@XPSMEUSBOTQPTF XPSME@UP@UFYUVSFςΫενϟۭ͔ؒΒϫʔϧυۭؒͷมߦྻΛٻΊΔXPSME@OPSNBMNVM UFYUVSF@UP@XPSME UFYUVSF@OPSNBMqPBUFOWJSPONFOU@DPMPSUFY$6#& DVCF@NBQ SFqFDU XPSME@FZFEJS XPSME@OPSNBMϫʔϧυۭؒͰͷ๏ઢΛٻΊͯΩϡʔϒϚοϓͷΛͱΔ
ڥϚοϓͱϨϦʔϑϚοϓΛΈ߹ΘͤΔ
Өʹ͍ͭͯ
ӨΛ͚͍ͨ ੲؙͰ͍͍ͱ͔ݴ͚ͬͯͨͲͰ͖ΕͪΌΜͱͨ͠ܗͷӨΛඳ͖͍ͨϦΞϧλΠϜ%ͰӨΛඳͨ͘Ίͷೋେख๏γϟυϚοϓ γϟυϘϦϡʔϜ
γϟυϚοϓޫͷҐஔ͔Βݟͯݟ͑ͳ͍ͷ͕ӨͩޫͷҐஔ͔ΒγʔϯΛඳը͢ΔͦͷࡍͷਂόοϑΝ ·ͰͷڑใΛςΫενϟͱͯ͠ࢹͷҐஔ͔ΒγʔϯʹషΔۙۙԕ ࣮ۙࡍͷڑͱςΫενϟͱͯ͠షΒΕͨڑ͕৯͍ҧ͍ͬͯΔͱ͜ΖӨͩʂ
γϟυϚοϓ
ίʔϯεςοϓϚοϓͷηϧϑγϟυ
ߴ͞ϚοϓӨΛ͚͍ͨϨϦʔϑϚοϓͷತԜʹӨΛ͚͍ͨجຊతʹγϟυϚοϓͱಉ͡ߟ͑ํΛ͢ΔޫͷҐஔ͔Βݟ͑Δ·Ͱͷڑͱ࣮ࡍͷ͔Βޫ·Ͱͷڑ͕Ұக͍ͯ͠ͳ͍ͱ͜Ζ͕ӨͩʂίʔϯεςοϓϚοϓͷηϧϑγϟυ
ߴ͞ϚοϓίʔϯεςοϓϚοϓͷηϧϑγϟυεςοϓࢹ͔Βݟ͑ΔҐஔΛܭࢉ͢Δී௨ͷϨϦʔϑϚοϓεςοϓࢹ͔Βݟ͑ΔҐஔͱޫͷҐஔΛ݁Ϳઢͱ໘ͷަΛٻΊΔ͜͜
ߴ͞ϚοϓίʔϯεςοϓϚοϓͷηϧϑγϟυεςοϓ୧Γண͍ͨҐஔ͕ࢹ͔Βݟ͑ΔҐஔͱҟͳ͍ͬͯΕɺࠓݟ͍ͯΔҐஔʹޫಧ͔ͳ͍ٻΊͨަ͔Βޫͷࠩ͠ࠐΉ͖ʹ୳ࡧΛߦ͍ɺนʹͿ͔ͭΔͱ͜Ζ·ͰਐΉ
ίʔϯεςοϓϚοϓͷηϧϑγϟυWPJESFMJFG4IBEPX'SBHNFOU4IBEFS qPBUXPSME@UFYDPPSE5&9$003% qPBUXPSME@QPTJUJPO5&9$003% qPBUXPSME@OPSNBM5&9$003% qPBUXPSME@UBOHFOU5&9$003% PVUqPBUQJYFM@DPMPS$0-03\XPSME@OPSNBMOPSNBMJ[F XPSME@OPSNBMXPSME@UBOHFOUOPSNBMJ[F XPSME@UBOHFOUqPBUXPSME@CJOPSNBMOPSNBMJ[F DSPTT XPSME@OPSNBM XPSME@UBOHFOUqPBUYXPSME@UP@UFYUVSFqPBUY XPSME@UBOHFOU XPSME@CJOPSNBM XPSME@OPSNBMqPBUYUFYUVSF@UP@XPSMEUSBOTQPTF XPSME@UP@UFYUVSF!qPBUXPSME@FZFEJSDBNFSB@QPTJUJPOXPSME@QPTJUJPOYZ[qPBUUFYUVSF@FZFEJSNVM XPSME@UP@UFYUVSF XPSME@FZFEJS!qPBUXPSME@MJHIUEJSHMTUBUFMJHIU<>QPTJUJPOYZ[XPSME@QPTJUJPOYZ[qPBUUFYUVSF@MJHIUEJSNVM XPSME@UP@UFYUVSF XPSME@MJHIUEJS!qPBUXPSME@ESJGUFE@UFYDPPSEESJGU1PTJUJPO qPBU XPSME@UFYDPPSE OPSNBMJ[F UFYUVSF@FZFEJSqPBUXPSME@SBZ@FOUSZ@QPTHFU-JHIU&OUSZ1PTJUJPO XPSME@ESJGUFE@UFYDPPSE OPSNBMJ[F UFYUVSF@MJHIUEJSqPBUXPSME@MJHIU@ESJGUFE@QPTESJGU1PTJUJPO XPSME@SBZ@FOUSZ@QPT OPSNBMJ[F UFYUVSF@MJHIUEJSqPBUUFYUVSF@OPSNBM@EUFY% OPSNBM@NBQ XPSME@ESJGUFE@UFYDPPSEYZSHqPBUUFYUVSF@OPSNBMOPSNBMJ[F qPBU UFYUVSF@OPSNBM@E TRSU UFYUVSF@OPSNBM@EYUFYUVSF@OPSNBM@EYUFYUVSF@OPSNBM@EZUFYUVSF@OPSNBM@EZ!qPBUUFYUVSF@MJHIUEJS@OPSNBMJ[FEOPSNBMJ[F UFYUVSF@MJHIUEJS!qPBUEJ⒎VTF@MJHIU@MFWFMNBY EPU UFYUVSF@OPSNBM UFYUVSF@MJHIUEJS@OPSNBMJ[FE !qPBUUFYUVSF@FZFEJS@OPSNBMJ[FEOPSNBMJ[F UFYUVSF@FZFEJSqPBUUFYUVSF@SFqFDUJPOSFqFDU UFYUVSF@MJHIUEJS@OPSNBMJ[FE UFYUVSF@OPSNBMqPBUTQFDVMBS@MJHIU@MFWFMQPX NBY EPU UFYUVSF@FZFEJS@OPSNBMJ[FE UFYUVSF@SFqFDUJPO JG EJ⒎VTF@MJHIU@MFWFM\TQFDVMBS@MJHIU@MFWFM^!qPBUMJHIU@EJTUBODFGPH@EJTUBODFQPX MFOHUI XPSME@MJHIUEJS qPBUTIBEPX@MFWFMNJO MFOHUI XPSME@MJHIU@ESJGUFE@QPTXPSME@ESJGUFE@UFYDPPSE qPBUMJHIU@MFWFMBNCJFOU@MJHIUNJO EJ⒎VTF@MJHIU@MFWFMTIBEPX@MFWFM MJHIU@EJTUBODFTQFDVMBS@MJHIU@MFWFMTIBEPX@MFWFMMJHIU@EJTUBODFqPBUpOBM@DPMPSqPBU MJHIU@MFWFMQJYFM@DPMPSqPBU pOBM@DPMPS ^qPBUXPSME@SBZ@FOUSZ@QPTHFU-JHIU&OUSZ1PTJUJPO XPSME@ESJGUFE@UFYDPPSE OPSNBMJ[F UFYUVSF@MJHIUEJSqPBUXPSME@MJHIU@ESJGUFE@QPTESJGU1PTJUJPO XPSME@SBZ@FOUSZ@QPT OPSNBMJ[F UFYUVSF@MJHIUEJSqPBUHFU-JHIU&OUSZ1PTJUJPO qPBUUFYUVSF@JOUFSTFDU@QPT qPBUUFYUVSF@SBZ@EJS\UFYUVSF@SBZ@EJS[OPSNBM@EFQUIqPBUUFYUVSF@FOUSZ@QPTUFYUVSF@JOUFSTFDU@QPT[UFYUVSF@SBZ@EJS[SFUVSOUFYUVSF@JOUFSTFDU@QPTUFYUVSF@SBZ@EJSUFYUVSF@FOUSZ@QPT^qPBUTIBEPX@MFWFMNJO MFOHUI XPSME@MJHIU@ESJGUFE@QPTXPSME@ESJGUFE@UFYDPPSE
ίʔϯεςοϓϚοϓͷηϧϑγϟυCFGPSF BGUFS
શ෦ೖΓσϞ
IUUQCJUMZF2,WE&෮शࢿྉܝࡌ༧ఆ63-ࢀߟจݙOpenGL(R) Shading LanguageThe Cg TutorialGPU gems3
5IBOLZPVGPSMJTUFOJOH