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

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

Unityシェーダープログラミングの教科書5 SRP[2]UniversalRP URP拡張カメラ/HDR/ポストプロセス編

告知です。新刊同人誌「Unityシェーダープログラミングの教科書5 SRP[2]UniversalRP URP拡張カメラ/HDR/ポストプロセス編」のPDF版を、2022年7月4日にBOOTHさんに登録しました。どうぞよろしくお願いします。 s-games.booth.pm 物理…

#unity テクスチャFilterModeのPoint/Bilinear/Trilinearの違いを確認する

テクスチャのfilterModeプロパティを介して、ピクセルをサンプリングする時の補間方式をFilterMode列挙体から設定できます。 docs.unity3d.com FilterMode列挙体 Point(No Filter) 補間しない Bilinear 隣接するピクセルとブレンドする Trilinear Bilinearに…

#unity 公式のPackageをカスタム化する手順の解説

この記事はUnityアドベントカレンダー2021part3の3日目の記事です。記事を書いたのもアップしたのも12月26日ですが、アドカレpart3がスカスカなのが寂しいので強引に入れさせてもらいました。 qiita.com ちなみに、part1の3日目も土屋が書いてますので…

#unity TimeLineにMarkerを打ち込んでオブジェクトにパラメータを送信する

この記事はUnityアドベントカレンダー2021part1の3日目の記事です。qiita.com 前日は志麻ひぬこさんでした。 shirokurohitsuji.studio この記事ではTimeLineで任意のパラメータをオブジェクトに渡せる機能「Marker」について解説します。 きっかけ 知り合い…

#unity URP12.0からForwardRendererクラスがUniversalRendererクラスにリネームされた(マジか)

いろんなことを同時並行していてなかなかまとまった記事を書けないんですが、今日調べ物してて驚かされたことを共有しておきます。 URPにおけるデフォルトのレンダラー実装であるForwardRendererという重要なクラスがあるんですが、これがURP12.0からUnivers…

#unity インポートしたキャラモデルにモーションを流したら関節がくにゃった時の対処法(補助ボーンとRotation Constraintコンポーネントの話)

はじめに 今回は「補助ボーン」について。キャラモデルのfbxデータをunityでインポートした時に、補助ボーンが原因で肘や膝の関節がぐにゃってしまうことがあります。その原因と対処方法を解説します。 例によって間違いを書いてる所もあるかと思うので、気…

#unity URPでVolumeのDoF(被写界深度)をTimelineで制御するスクリプト

Unityで動画を作っているフリーの映像作家さんがレンダラーをビルトインからURPに移行する検証をしていて、ちょくちょく起きる問題に土屋が相談に乗っています。現場の方が直近でどんな事で困っていて、何を求めているのかについて知見を得る機会だと感じ…

#unity TMP_Text.alignmentに設定する値と内部的に保存される値の対応

TMP_Text.alignmentという、文字描画時のアラインメントをTextAlignmentOptions列挙体で設定するプロパティがあるんですが、この列挙体はデータ個数が37個(!)もあって、しかもインスペクタのUIと直接対応しておらず把握が大変だったのでここでまとめ…

#unity 「特定条件まで待機しつつも毎フレームこれを実行したい」の実装方法を考える

最近、こちらの記事*1を読んだのをきっかけに、UniTaskの勉強をしていました。 blog.kyubuns.dev 勉強に使ったのはこちらの本。UniRx/UniTask完全理解 より高度なUnity C#プログラミング (アスキードワンゴ)作者:打田 恭平発売日: 2020/11/16メディア: Kindl…

#unity VContainerを使ってDI(Dependency Injection)コンテナについて最低限理解する

「DIコンテナ」という言葉を聞いたことがあっても、それがなにをする物で、どういう風に使うのかがピンと来ない人は多いかと思います(土屋もそうでした)。この記事では、Unity用DIコンテナフレームワーク「VContainer」を最小限のサンプルコードで動作さ…

#unity RectTransform(Canvas)のAnchrosとPivotの相互関係チートシート

Unity UI(≒uGUI≒Canvas)って「あるタイミングでがっつり弄って、終わるとまたしばらくは使わない」ということが多く、久し振りに触るとルールをまるっと忘れてる印象があります。特に覚えられないのがAnchorsとPivotの相互関係で、ドキュメントを読んでもエ…

#unity 小ネタ:Awake()とStart()の実行順序の話(か?)

年に1回くらい「今なら僕の考えた最強のゲーム用ステートマシンを設計出来る気がする!」と考えるタイミングがありまして、今年は今がその状況です。今回書いたステートマシンはこちら。詳細についてはまた改めて記事を作ります。ステートマシン本体 StateM…

#unity Unity2020.2リリース記念でURP10の新機能であるSSAOを有効化してみる(Renderer Feature機能概説)

このエントリはUnity #3 Advent Calendar 2020の20日目の記事です。 qiita.com はじめに(宣伝) 筆者は「Unityシェーダープログラミングの教科書」という同人誌シリーズを頒布しています。最新の4巻ではSRP/URP(UniversalRP)についての技術的な解説と、UR…

#unity コンタクトシャドウの前にAO(アンビエントオクルージョン)を知ろう

Unity HDRP アドベントカレンダー13日目です。 qiita.com 予定ではHDRPにはあってURPには無い機能の一つである「コンタクトシャドウ」について書くつもりだったんですが、本業が忙しくて調査が半分しか終わっていません。なので今回は前半部分につい…

#unity シーンビューのカメラをWASDで動かせるって知らなかったので反省した

この記事はUnity HDRP アドベントカレンダー Advent Calendar 2020 - Qiitaの6日目の記事です。 qiita.com HDRPだろうとURPだろうとはたまたビルトインシェーダーだろうと、描画の確認の為にはシーンビューを縦横無尽に移動する必要があるわけですが、カメラ…

#unity Unity2021.1αのHDRPサンプルシーンでリフレクションプローブを見て動かして焼く

この記事はUnity HDRP アドベントカレンダー Advent Calendar 2020 - Qiitaの5日目の記事です。qiita.com やっぱりHDRPやってる人少ないのかな……土屋がそもそもHDRPやってないからな……今からでもUnityシェーダー全般に範囲拡大してもいいんじゃないかな……。…

#unity ShaderGraphメモ1

今まで食わず嫌いでShaderGraphを触って来なかったんですが、ちょっとしたシェーダー表現をテストしたい時はノードエディタが使えた方が便利かと考え、少しずつ触っています。序盤でさっそく何か所かはまったのでメモ。 バージョンはUnity2019.4.14/ShaderGr…

ミップマップレベルごとに個別のテクスチャを設定したdds形式ファイルを作成する方法

以前ミップマップについて記事を書いた時、いつか自分でもミップマップレベルごとに個別のテクスチャを設定したデータを作るかもとふんわり書きました。 someiyoshino.info ただ、この時は「そうは言ってもそういうテクスチャが必要になることなんて普通無い…

#uniy transform.position.xに直接値を代入できない理由

GameObjectを制御する時に、ある座標軸だけ値を更新したい時がありますが(ありますよね?)、以下のコードはコンパイル出来ません*1。 transform.position.x = 0.0f; transrate()を使うこともできますが、その場合相対座標指定になってしまいます *2 。一つ…

UnityとWinMergeの連携

Unity Collaborateという、複数人でコードを共有できる非常に便利な機能があります(ライセンスによって共有できる最大人数が変わる)。土屋は主に自分のプロジェクトのコードを複数PC間で同期させるのに使っています(チーム間共有はGitを使用)。Unity単…

#unity [ポスプロ]LUT(ラット)について

技術書典9が無事閉幕しました。土屋のサークルの新刊も大変多くの方に手に取っていただきありがたい限りです。ブログで告知するのを完全に忘れてまして(!)ホントすみません。早めにエントリ記事を作ります。 さて、次回技術書典10は年末予定(次もオン…

非同期メソッド入門:async/await構文が何故必要とされ、どのように動作するのかを解説する

はじめに 使う機会がないと永遠に触れることの無い機能オールタイムベスト(?)こと「非同期処理」、そしてC#で非同期処理の代名詞的な扱いである「async/await構文」についてまとめました。「何故非同期処理を実装するのに専用構文が必要なのか?」「async…

#unity Mixed LightingのSubtractiveモードでのリアルタイムシャドウ色の手動調整について解説する

シェーダー本4がようやく脱稿しました(宣伝エントリは後で作ります)。「 #Unity シェーダープログラミングの教科書SRP[1] UniversalRP/Litシェーダー解説編」脱稿しました>< シェーダー本シリーズの4冊目になります。9月12日から始まるオンラインの…

ただいま作業中

現在、このブログのGoogle Adsense申請を目指してまして、その途中経過として、過去ログの大部分を段階的に下書きに戻しています。最終的には全部元に戻す予定です。 なんで段階的に下書きに戻しているかというと、審査の却下理由が「別サイトからコンテンツ…

#unity シェーダーまわりのtips

GWはシェーダー本4の執筆をメインに考えてまして、その最中で気づいた小ネタはこのエントリに随時追加していこうと思います。特記がなければSRP/UniversalRP/Litシェーダーの話です。 MaterialEditor.TextureScaleOffsetPropertyメソッドの引数1個版 ソー…

権利フリー朗読テキスト(約2分)「おうちで握手」を公開します

知らない人も多いでしょうが、実は土屋の本業は作家/ゲームシナリオライターなのです。お友達の声優アイドル系宣伝マンさんから「休校で家にいる子供達に読み聞かせするコンテンツが欲しい。権利フリーで2分尺くらいの朗読テキストがあると助かる」と相談…

統計検定2級合格記(後編:2級の勉強に使った教材&ガジェット編)

後編です。前編はこちら。 t-tutiya.hatenablog.com 補足:2020年/2021年試験について 前編で書くの忘れてたこと。これまで年2回の一斉試験で毎回行われていた3/4級試験は2021年からCBT試験のみに変わります。2020年と2021年の試験について www.toukei-k…

統計検定2級合格記(前編:統計を勉強する気になった3つの理由編)

先日統計検定2級試験に合格しました。記録の意味も兼ねてまとめ記事を書きたいと思います。 統計検定とはなにか? 統計検定 www.toukei-kentei.jp 統計検定は、日本統計学会が公式認定している統計に関する知識や活用力を評価する全国統一試験です。一般財…

#unity "Universal RP(旧LWRP)"という名称は7.1.7から"URP"に統一されるっぽい

ドキュメントを見てて気づいたんですが、Universal RPは7.1.7から、"URP"が正式な略称(?)になったぽいです。 Unity2019.2までLight Weight Render Pipeline(LWRP)と呼ばれていたレンダーパイプラインは、2019.3から"The Universal Render Pipeline"と改称…

プッシュダウンステートマシンのサンプル実装(階層構造を扱える状態遷移機械の話)

プッシュダウンオートマトン形式のステートマシン(以下プッシュダウンステートマシン)について人に説明するときにいつもサンプルコードを探すのに手間取るので、デモ用のコードを書きました。ゲーム開発ではよく使うイディオムだと思いますが、一般的な実…