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

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

#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"と改称…

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

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

#unity 2019.3.0f3でマテリアルの透明度が適用直後に反映されない(実害無し)

URP関連のバグ(なんだかなんなんだか)もう一個見つけました(報告済み)。 昨日見つけたのはこちら。 バージョンはUnity2019.3.0f3(RC3)です。 再現手順 1・シーンにオブジェクトを生成し、新規マテリアル(URP/Lit)を適用する。 2・Surface Typeを"…

#unity 2019.3.0f3で存在しないライトプローブメッシュが表示される(修正済み)

あけましておめでとうございます。今年もどうぞよろしくお願いします。 一昨年にブログ更新を再開し、それなりに運用できるなと感じました。そこで、去年はこのブログは技術系記事のみにして、ジャンルごとに別のブログを立ち上げていくつもりだったんですが…

#unity 疑似環境マップでARでモデルを風景に馴染ませたい

この記事は"シェーダーアドベントカレンダー2019"の7日目の記事になります(遅刻して申し訳ありません!><) 今回は以前から試してみたいと思っていた、超簡単偽環境マップの作成に挑戦してみたいと思います。まあ失敗してもそれはそれで経験ということで…

小ネタ:SRP/LWRP/HDRPのドキュメントがどこにあるのかのまとめ

この記事は「Unity #3 Advent Calendar 2019」の 12/6 の記事です※すみません、どうにも間に合わなそうなので、ひとまず草稿のままアップします。適宜文章足したりスクショつけたりして、クリスマスまでに完成していればと思います。ごめんなさい!>< 2019…

#Unity プロジェクト+VS2019環境でStyleCop.Analyzersを使用するために必要な4(+1)つの手順

StyleCopはいわゆるコードの静的解析ツールでして、VS2019の拡張パッケージとして提供されています。マイクロソフトが開発しているオープンソースプロダクトで、C#コードが推奨コーディングスタイルに準拠しているかを常時監視し、準拠していない箇所を指…

#unity レイマーチング入門(1) レイマーチングの原理

レイマーチング(Ray Marching)という描画手法があります。ポリゴンを空間に配置するのではなく、個々の物体を「距離関数(Signed Distance Function)」として定義し、その関数を介して物体がどのように空間に配置されているかを計算し、描画します。 レイ…

#unity VS2017からVS2019へ環境を移動する。

Unity2018を使っている環境にUnity2019をインストールするとVisual Studio 2019がインストールされないようで、毎回VS2017からVS2019に環境を移動するのに戸惑うのでメモっておきます。 下記サイト経由でVisual Studio Community 2019をダウンロードする(無…

#unity 新InputSystemを試そうとしてハマッた話

新しいInput Sysytemを使ってみようと思いまして、1.0.0のPackageをインストールし、下記公式ドキュメントのサンプルコードを実行してみました。https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/QuickStartGuide.htmlが、なぜかInputの…

#unity Camera.orthographicSizeプロパティドキュメント私家訳

Camera.orthographicSizeプロパティが翻訳されてなかったので私家版です。ところどころ意訳してるのでご自身の責任でどうぞ。 ちなみに8割Google翻訳。最近のGoogle翻訳ホント精度が上がってて助かる。 公式: https://docs.unity3d.com/ja/2019.1/ScriptRe…

頂点アニメーションとはなにか

9月19日に新宿で「カプコンオープンカンファレンス」というイベントが開催されました。メインはカプコンの内製ゲームエンジン「RE(アールイー)エンジン」の解説だったのですが、バイオハザード7やデビルメイクライ5で実際にどのような素材を作成~…

#unity canvasを作るとシーンに対して無茶苦茶大きく表示されてしまう問題(?)の対応方法

Canvasを使う時、毎回焦るのが、ヒエラルキーにCanvasを追加した時、通常のオブジェクトに対してCanvasがめちゃくちゃ大きなサイズでシーンに配置される事です。Canvas作るのって、基本的には新規プロジェクト開始時の1回しかやらないのでこれの対応方法を…

#Unity SRP(LWRP=UniversalRP)のシングルPassフォワードレンダリングとはなにか

シェーダー本4に向けてSRP(LWRP=UniversalRP)の勉強を始めています(ちなみに来春予定です。直近の技術書典には間に合わないですごめんなさい)。 今回はSRP(LWRP=UniversalRP)で採用されたシングルPassフォワードレンダリングについて SRPとはなにか…

#unity (C#)でFlatBuffersを使い倒す(5) バイナリデータレイアウト解説

今回はFlatBuffersでシリアライズされたバイナリデータが、実際にどのようなルールでメモリにレイアウトされているかを解説します。 使用するデータ 前回作成したバイナリデータの、メモリレイアウトを以下に示します。 ・"$00"は、バイナリデータ上の0番地…

ダミーボタンUI素材ジェネレーターを作りたかった

ゲームに限らないんですが、メニュー画面を実装する際、ひとまず仮で使うボタン画像の素材が欲しいという時がよくあります(……ありますよね?)。プロトタイプ制作時とか、まだレイアウトの仕様が決まっていないので各ボタンのサイズが決まっていないのだけ…

#unity (C#)でFlatBuffersを使い倒す(4) シリアライズ/デシリアライズのサンプルコード

いよいよデータのシリアライズ/デシリアライズを実行します。テストなので一個のプログラムで「データの作成→シリアライズしてファイルを保存→保存したファイルを読み込み→デシリアライズしてデータを再構築する」という手順を一気に行います。 Unityでの作…

#unity (C#)でFlatBuffersを使い倒す(3) スキーマファイルからコードジェネレートする

FlatBuffersを使う流れ FlatBuffersを使用するには、以下の3つの手順を経る事になります。 スキーマファイルを作り、flatc.exeでコードジェネレートする データをバイナリ配列にシリアライズしてファイルに保存する。 ファイルからバイナリ配列を読み込みデ…

#unity (C#)でFlatBuffersを使い倒す(2) FlatBuffersの導入手順

前回、ゲームで用いる数値データを管理する手段として一般的な、バイナリデータを構造体配列にマッピングする手法について解説しました。今回からは、FlatBuffersというフレームワークを使って、Unity(C#)上でシリアライズ/デシリアライズ処理を実装してい…

#unity (C#)でFlatBuffersを使い倒す(1) ゲーム開発時に数値系データを外部バイナリファイルで管理する方法

前回の記事でJSONデータを構造体配列に読み込むことができたので、次はこれをバイナリデータとしてシリアライズ/デシアライズする方法を検証します。どちらかと言えばここからが本番です。 しばらくはFlatBuffersというライブラリの挙動を検証します。実際…

#Unity JsonUtiltiyでモンスターデータのJSONファイルを構造体配列に読み込む

ゲームでは大量の(本当に大量の)数値データを管理する必要があり、そのデータをどのように管理するかは、ゲーム開発では常に重要なテーマとなります。ここで言う数値データとは、武器のデータやモンスターのデータ(構造体)などのことです。これらが容易…

Unityセーブデータ実装3原則【2019】

Unityでローカルにセーブデータファイルを保存したい時に、毎回やり方を失念してしまい、「あれ? どこに保存すればいいんだっけ? APIは何を使うんだっけ?」となってネットを漁ることになり非効率なので、また忘れても大丈夫なように、ここに「Unityセ…