みたいなことをやりたい時に使います。全体に青っぽいですね。これは、「十分遠く」の「全方位」からやってくる光による、拡散反射です。光源になるのは空や地面ですね。地面が光っていることにしてしまうと楽です。地面は草なので暗い緑が来る、といった感じになります。これもライトマップに焼くことができます。欠点としては、影が出せない、ということがあります。いう場合はLightProbeを置いて代わりに使えば良いでしょう。LightProbeがある時にはこのデータを使っていない気がします(厳密な確認はしてない)。LightProbeなしでも良い気がします(スポーツのスタジアムとかはいい例です)。光の計算を環境光の計算に含めてしまうこともできます。影は出せないので、太陽のように明らかに明るい光源を含めるのはおすすめできません。した影がなくても気にならない場合には良いでしょう。Lightingというものがあり、これで設定します。環境光の鏡面反射かすかに青白い所があります。これは空の映り込みです。周囲がテッカテカに映った絵が見られるでしょう。拡散環境反射と同じく、光源になるとのは空や地面です。視線や位置によってどこが映り込むかが変わります。ライトマップには焼けません。そちらが代わりに使われるようです。計算の中身は同じなのでしょう。重いがYes雑ですが、だいたいこんな感じでしょうか。動かないものは焼け一番大事なことはこれじゃないでしょうか。人のように動くものの占める面積はそれほど大きくありません。大きく負荷が変わります。動くものが占める面積が小さいゲームほど、焼くことの効果は大きいわけです。gameObject側の設定をstaticにする必要があります。ライトマップが作られて、照明計算が軽くなるわけです。できる絵は格段にリアルになるのですが、欠点も多数あります。品質を上げれば上げるほど容量を食います。光源の設定ごとに容量が増えます。なれば、8倍の容量となり、実質無理です。考えると、途端に容量がヤバいことになります。次に、焼きに時間がかかります。開発効率を落とします。完成前に本番焼きをする、といった運用になるでしょう。最大の欠点が、実行時に物や光源を動かせなくなることです。みたいな仕様があるなら、この手は取れません。いったこともできません。焼くのは諦めた方が良いでしょう。細かな陰影を焼なくても良い絵柄(アニメ調とか)を模索するのも良いかもしれません。ような手法で、多少なりとも焼きに近い品質に近づける手もあります。「とりあえず焼く」という方針が無難なのではないでしょうか。焼けるのは動かないものだけです。加えて、動くものと動かないものの相互作用の問題があります。その最たるものが影です。動くものと動かないものの間の関係は、以下の4つです。「動くもの」を「人」と言い換えて説明します。その方がイメージが伝わりやすいでしょう。DrawCallが倍になる上に、影判定のシェーダ負荷も結構キツいです。この要素は捨てることになります。影がないことをゴマかしやすくなります。モデルの頂点を地面に射影して黒く塗ることで、比較的軽く影を描けます。それすら耐えられない場合は、丸いぼやけた板を地面に置く「丸影」が良いでしょう。何もやらないわけには行かないのです。影をDisableにしてしまい、自力でどうにかすることになるのでしょう。いう場合には、標準のシャドウマップ法で行うことになります。動かないものにもかかってくるので、かなり負荷は上がります。正確性の問題もあります。動かないものの照明計算はもうライトマップに焼いてあるのです。ライトマップからはわかりません。それ以上は暗くならないはずですが、そういう区別ができないのです。「一定値を引く」ということになります。subtractiveにしておけばそうなります。影がどんな色になるかは固定で設定します。影の中に影がある例です。わかりやすいように影の色を緑にしておきました。絵としてはおかしくてもゲームとしてはアリ、ということもあります。大人しい色にすれば気にならないかもしれません。影の色をUnityのデフォルト値にしてみました。...すみません、私はかなり気になります...もちろん追加の負荷を払えば、人の影が日陰では落ちないようにできます。Lightingの項目をshadowmaskにするだけです。「元々日陰かどうか」を追加情報として持つのでしょう。建物が、人に、影を落とすLightProbeで多少はやれます。描くしかなく、かなり計算が増えます。「とりあえず」の設定としてはナシでいいでしょう。製品としてどうしてもということであれば、何か考えることになります。建物が、建物や地面に、影を落とすライトマップに焼かれているので問題ありません。基本的にはボヤけた影で我慢することになります。あとゲームとして重要なのは、人が地面に落とす影です。これがないと物の位置関係を把握できません。スイッチ一つで行けるシャドウマップ法でどうにかしたいところです。ありますので、Onにしてみるのが良いのでしょう。「影の中に影」はちょっと悲しいですね。負荷を見て耐えられるならShadowmaskにしてしまうのが良いのでしょう。人間の視覚はコントラストが強い部分で形を把握します。印象を左右するのです。鏡面反射は視線に依存するので焼けません。staticなものの直接鏡面反射が一切計算されなくなります。軽くなるはずですが、見た目は相当寂しくなります。いうのが良いかなと思います。良い絵にするにあたって調整その他で結構手間をかけてしまっているはずです。それを削っていくのは無駄も多いし、心理的にも苦しい作業になります。LightProbeの配置まず、ステージが開けたゲームならLightProbeなしで始めていい気がします。障害物があったり入り組んだ場所があったりはあまりしないでしょう。LightProbeを置くのは結構面倒くさいので、ナシでいい気がします。初期配置用ツール今回は、初期配置用として、雑にLightProbeを置くスクリプトを用意しました。等間隔でLightProbeを置くだけです。そこまでしなくてもいいでしょう。雑に置いても感じはわかります。LightProbeはあまり密に配置しすぎると、結果がおかしくなります。「動く物の大きさより大きな間隔で置く」が基本です。水平間隔を1メートルよりは大きく取らないとおかしくなります。中央にやけに暗い球がありますが、これ何が起こってるかわかりますか?このシーンは真ん中に円柱があります。この円柱の中に配置されてしまいました。円柱の中ですから、周囲から光は全く来ず、真っ暗になります。それが球全体に適用されます。すると、こういうことになるわけです。これをわずか1m動かして円柱から出してやると、こうなります。簡単ではないわけです。避けないといけません。(私だったらLightProbeが不要な開けた空間でしかやらないと決めてしまうでしょうね)。設定の実際では設定の実際です。Illuminationどう考えても重そうなので、とりあえずOffです。私のスマホで測ったらそれなりに重くなりました。Illuminationonにするとライトマップが焼かれます。動かないものはこれでできるだけどうにかしてもらいましょう。LighitngModeとりあえずSubtractiveにして様子を見ています。影の中に影が落ちて辛い、となればshadowmaskにすることもあるでしょうが、やはり重くなります。絵を作り込む段階になったら考えるでしょう。Samples少ないほど焼きが速いので、開発中は下げておきたいところです。2でも感じはわかります。シーンに置く物が出来上がって、ライトの角度や色が決まったら増やして本番焼きをしましょう。Samples8が最低です。Samples8が最低です。Resolutionシーンが広くて複雑なほど下げないとテクスチャ容量が大きくなります。2に設定すれば、50cm精度で焼く、ということになります。本番焼きの際にも、容量の問題があるのであまり大きくはできません。スマホのゲームでライトマップに100MBも食わせるわけには行かないでしょう。いう程度に抑えたい気分でいます。SettingsAutoGenerateoffにしています。勝手に焼かれた方が便利であればonでも良いのでしょう。Settingsスマホ系のプラットホームではMediumが標準なので、それをいじっておくのが良さそうです。Count1のままにしておきました。1個しかライトは当てない、と割り切ってしまった方が良いかと思います。合わせ技でごまかす方が無難ではないでしょうか。Aliasingポリゴンの輪郭が綺麗になりますが、下の機種に合わせるならoffでしょう。ポリゴン境界が多少ジャギッてもそんなに気にならない気がします。いうのも厄介なところです。Probesoffのままが良いでしょう。いうのは結構大変です。こまないとどうにも寂しいので、そういう場合はonにしたくなります。Onlyで良いでしょう。影の輪郭を柔くする処理は重いのです。Disableにするとかなり軽くなります。Distance小さすぎると遠くで影がなくなってしまうので、必要に応じて大きくしましょう。遠くから写す(望遠に寄せる)場合は、ここが足りなくなりやすいので注意が必要です。Fitにしていればそんなにひどいことにはならないようです。Fitが良さそうです。できるだけ狭くしてくれるので、画質が上がります。Fitにすることになるのでしょうが、品質と負荷にはお気をつけください。メモリ量とGPU負荷を押し上げることになります。雑ですが多少は測定しておきました。フル解像度1280x720での測定です。どちらでも慣れている方でご覧ください。32一応shadowMaskや、RealTimeGIが遅いことの確認ができました。staticにせず焼かないでいるとそれなりに重い、ということも確認できています。同じ処理だからでしょう。いうことかと思います。この過程でスクショを取ったので貼っておきます。順に、Subtractive、Shadowmask、static不使用、Subtractive影なし、です。Shadowmaskにすると「影の中に影」問題が起こらなくて実に良いですね。地面が全体に明るく、これは直接光の鏡面反射計算によってその分明るくなっているからです。その分だけ重くなっていますから、悩むことになるのでしょう。staticフラグを全部外すと、緑や赤の壁の影響は全然わからなくなってしまいます。軽くもないという状態です。影は全部くっきりで一貫性があります。この方が望ましい製品もあるでしょう。影をなくすと結構速くなります。丸影にしてしまえば、ほぼこの速度でゲームが動くわけです。いうことがわかります。照明計算をするな、とか、さらには「シェーダ全部自分で書け」ということになるかと思います。実際には解像度を下げれば良いでしょう。1280x720は高すぎるからです。解像度を下げた分高度な手法を入れる、という方が総合的な質は高くなるかもしれません。まとめ簡単に書くつもりが、また長くなってしまいました。最新のテクニックは重いのです。いうのは悲しいですね。今回の比でないくらい私のスマホに厳しい結果になると思います。それにしても60fps出ないのは悔しいですね。RenderPipelineごと置き換えたい衝動に駆られます。やってしまったら、たぶんそれも記事にすると思います。2019の2日目の記事です...2019-06-19Raycasterを自作してデバグUIをUGUI非依存にしてみたこんにちは。以前デバグUIのライブラリを作っ...2019-03-04輝度+色差でテクスチャ圧縮(YUVあるいはYCbCr)こんにちは。(1)月別アーカイブ検索スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。