土屋つかさの技術ブログは今か無しか

土屋つかさが主にプログラミングについて語るブログです。

Unity

「ユニティちゃんトゥーンシェーダーの コードをひたすら読む本(PDF版)」内容紹介

仕事が忙し過ぎて更新できないまま技術書典4を迎えてしまったため、その時の新刊「ユニティちゃんトゥーンシェーダーの コードをひたすら読む本 (Ver2.0.3対応版)」の紹介記事をまだブログにアップしていなかったのでした。にもかかわらず、気づけば5月…

ユニティちゃんトゥーンシェーダーのUIを改修するエディタ拡張を作ってみた

カスタムマテリアルエディターの勉強の過程で、ユニティちゃんシェーダーのUIを改修するコードを書いてみました。以下主な特徴です ソースコードの配置場所 ソースコードは下記にアップしてあるので欲しい方はご自由にどうぞ。あくまで土屋が使いやすいよ…

カスタムマテリアルエディターまわりのドキュメント誤訳メモ

ShaderGUI.FindProperty https://docs.unity3d.com/jp/current/ScriptReference/ShaderGUI.FindProperty.html原文:If true then this method will throw an exception if a property with propertyName was not found. 公式訳:True の場合、このメソッドは…

ミップマップレベルを可視化する

ミップマップテクスチャの簡単な説明 Unityではテクスチャを登録すると、そのテクスチャのミップマップテクスチャ群が自動生成され、リソースに追加されます。ミップマップテクスチャというのは、元の画像を25%ずつ縮小した画像群(通常9枚作成され、元…

Unityで投影テクスチャマッピングを実装する際に抑えておくべき基礎情報

ブログで告知する余裕がなかったのですが、10月22日に開催された技術書典4では既刊のUnityシェーダー本を過去最多部数の再販と、新刊コピー本の「ユニティちゃんトゥーンシェーダーのコードをひたすら読む本」を持ち込んだ所、技術書典始まって以来の晴…

UnityのシェーダーでBINORMAL入力セマンティクスが機能しない話と回避する方法の話

技術書典4合わせで「ユニティちゃんトゥーンシェーダーをひたすら読む本」というコピー本を作りました。時間の関係で調べ切れなかった事を1個書いておきます。ああ、これも書きたかったな……。シェーダー本2に収録しよう……。 Unityの頂点シェーダーの入力…

Unity Tips "UV Charting Control"と"Lightmap Settings"のオプションを出す方法

一瞬戸惑ったのでメモ。Mesh Rendererのインスペクターで"UV Charting Control"と"Lightmap Settings"の2項目を表示させるには、以下の設定が必要です。・"Lightmap Static"のチェックを入れる(対象のオブジェクトをStaticにした場合は自動でオンになる) …

ユニティちゃんシェーダーを読む(トゥーンシェード1)

準備運動も終わったので本丸のトゥーンシェード部のPass(Name "FORWARD")を見て行きます。今回は頂点シェーダー部 入出力セマンティクスと頂点シェーダー struct VertexInput { float4 vertex : POSITION; float3 normal : NORMAL; float4 tangent : TANGE…

ユニティちゃんシェーダーを読む(輪郭線3)

フラグメントシェーダー関数 ここからフラグメントシェーダー関数になります。 float4 frag(VertexOutput i, float facing : VFACE) : SV_Target{ 入力は、VertexOutput構造体と、VFACEセマンティクスがバインドされたfacingです。VFACEは浮動小数点スカラー…

ユニティちゃんシェーダーを読む(輪郭線2)

余談:ユニティちゃんシェーダーのバージョンの話 この記事で参照しているコードのverは2.0.3なのですが、Unityの小林さんから2.0.4ではごっそり修正してるというお話をツイッター経由で教えて頂きました。うっすらそうなのかなとは思っていたのですが、まあ…

スクリプタブルレンダーパイプラインとはなにか

Unity 2018.1から、シェーダーの内部処理に大胆なメスが入りまして、スクリプタブルレンダーパイプライン(SRP)という機能が実装されました。スクリプタブルレンダーパイプラインの概要 https://blogs.unity3d.com/jp/2018/01/31/srp-overview/ とはいえ、S…

ユニティちゃんシェーダーを読む(輪郭線1)

ようやく精神的に余裕が生まれはじめまして、シェーダー本2の執筆を始めようと思ったものの、今から初めても技術書典4への新刊はどうにも間に合いそうにありません。 そこで、前からやろうと思っていた「ユニティちゃんシェーダーのコードを全文読む」を不…

メモ:解決できてない課題

Canvasは非常に便利なんですが、3Dモデルが配置されている空間とスケールがあまりにも違いすぎて(Canvasのスケールに合わせると3Dモデルが米粒になってしまう)、往復して作業するのが非常にめんどくさいのだけど、これどうにかならんのかな?

メモ0220

Humanoidモデルに対して、モーションデータで追加のボーン(髪とか)を動かしたい場合、Animationの設定でそれを明示する必要があります。 具体的な手順は以下(モデル側も、モーション側も必要だと思います)。・Animationタブの下の方にある"Mask"を開く …

メモ0126

背景モデルをインポートして、グローバルイルミネーションで照らす為にstaticに変更すると、ライトマップがベイクされた後に画面に黒いドットがばらまかれたような変な絵になってしまうことがありました。 これの原因がどうにも分からなかったのですが、ひと…

Unity Tips(17:ユニティちゃんリップシンク)

下記のサイトを見ながらユニティちゃんモデルでリップシンクさせてみました。ユニティちゃんが声に合わせて口パクしてくれるリップシンクアセットを作ってみた http://tips.hecomi.com/entry/2014/07/21/125319 作業中どうにもうまく動かなくて悩んでいたの…

3Dリアルタイムレンダリングにおいてベクトルの内積の性質を知っていることがどれだけ重要かについて解説する

今年も様々な方に有形無形を問わずお世話になりました。感謝の気持ちを込めて大晦日に多少長めの記事を書いてみました。よろしければごらんください。 課題の提示 まず、こちらの画像をご覧ください。 シーンに球体とポイントライトを一個配置しています。デ…

Unity Tips(15:セキュリティソフトとの競合の注意)

これは単なるメモ。 Unityを起動してプロジェクトを選択するとHold Onのダイアログで「Compiling Scripts」と表示されたまま先に進まなくなるという現象が頻発していました。この状態になるとプロセスを落とすしか解決策がなく、プロジェクトのLiberallyとTe…

DXTnm形式とはなにか。あるいは、法線マップが青紫色な理由

「Unity #2 Advent Calendar 2017(https://qiita.com/advent-calendar/2017/unity2)」7日目になります。6日目はTeachさんによる「画像の色相を変更する.(https://qiita.com/Teach/items/52883127033885a95e82)」 でした。 自己紹介(飛ばしてOK) ちょ…

Unityのシェーダー記述言語ShaderLabのVisualStudio用プラグイン「ShaderLabVS」導入手順

VisualStudioでshaderファイルを編集する際に、インテリセンスを機能させるためのプラグインでいいのが見つからずにいたのですが、ようやく実用レベルになるプラグイン「ShaderLabVS」を見つけました。以下導入手順を書いておきます。 導入手順 ShaderlabVS …

Unity Tips(14:スカイボックスについて)

自分用メモ・「スカイボックス」というのは、Unityではマテリアルのことである。「マテリアルである」というのは「シェーダーである」とほぼ同じ意味である。 ・スカイボックスマテリアルは、Window>Lighting>Settingsの、Environment>Skybox Materialに設定…

Alloy Physical Shader Framework導入手順解説

「Alloy Physical Shader Framework」という、Defered Shading用に特化して開発され、UnityCGなど標準ヘルパーコードまで(多分)改造して作りこんでいる、有料シェーダーアセットがあります。これが、つい最近突如無料化し、界隈で話題になっていました。 h…

Unity Tips(13:テクスチャを重ねて描画する)

これまで食わず嫌い的に3Dプログラミングを避けて通ってきたこともあって、「こういう処理は3Dプログラミングでは通常こういうアプローチを取る」というのがわからず、難しいことではないのに解法にたどりつけない事がよくあります。今回もそのパターン…

Unity Tips(12:Skyboxの作り方)

公式ドキュメントのスカイボックスの作り方(https://docs.unity3d.com/jp/current/Manual/HOWTO-UseSkybox.html)だと、なぜか6面に個々に別の画像を使用する旧形式しか解説されていないので、Cubemapテクスチャ(https://docs.unity3d.com/jp/current/Man…

Unity Tipes(11:マニュアル再翻訳シリーズ:レンダリングパス周り)

飛び飛びで読んでいるので他にもあるかもしれません。気づいた時に更新しておきます。https://docs.unity3d.com/ja/current/Manual/RenderTech-DeferredShading.html 「Deferred Shading レンダリングパス」内「要件」第2パラグラフの訳がおかしく、こちらも…

Unity Tips(8:MonoBehavior派生クラスのコンストラクターが呼びだされるタイミングについて)

MonoBehavior派生クラスに設定されたpublicフィールドは、Inspector上から値を設定できます(SerializeField属性を設定すれば非publicフィールドでも編集できる)。設定された値は、ゲーム実行時にスクリプト側から取得できます。サンプルなどで非常に多用さ…

Unity Tips(7:処理タイミング関係)

Debug.break()は何をしているのか Debug.break()を実行すると、Unityエディタでポーズボタンを押した時と同様に処理が一時停止します。実行時には以下の2点に気をつけてください。 ・単にポーズがかかるだけで、デバッガがアタッチしていてもブレークが発生…

Unity Tips(5:CanvasとButtonの話)

RectTransformを持った空のGameObjectを作成する方法 canvas上で動作させるGameObjectは、通常のTransformではなくRectTransformを持たせる必要があるのですが、「RectTransformを持つ空のGameObject」を表すクラスは無いようで、動的に生成する場合は以下の…

ButtonのOnClickイベントが2回発生している(ように見える)バグに悩まされた話

コードを書いていて、どうにもおかしな挙動に悩まされた時の話。結論から言うと土屋の設定ミスだったんですが、Unityらしいハマり所と思ったので紹介しておきます。 不具合発生:3つのボタンのOnClickイベントが意図しない挙動をする。 canvas上にButtonを3…

Unity Tips(4:Unityマニュアル誤訳編)

Unityマニュアルのアニメーションの項は所々「誤訳では?」という所があるので気づいた所について。まあ、これだけの分量を日本語で読めるだけでもありがたい話ではあります。 以下幾つかの項目に私訳をつけていますが、各自の責任で運用してください。 Anim…