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

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

2017-01-01から1年間の記事一覧

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シェーダープログラミングの教科書 ShaderLab言語解説編」本文サンプル公開&BOOTHでPDF版頒布開始しました

10月22日に開催される技術書オンリー即売会「技術書典3」にて、「Unityシェーダープログラミングの教科書 ShaderLab言語解説編」を初頒布します。表紙は盟友のふゆの春秋さんに描いて頂きました。「若者(学生)が武器(Unity)を手にした」というモチ…

近況報告

気がつくと1カ月あけてしまって反省。つらつらと近況報告。 Unityシェーダープログラミング本書いてます 「Unityシェーダープログラミングマスターブック〜ShaderLab完全解説編〜」という同人誌を今書いてまして、次の技術書典で初頒布予定です(間に合えば…

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

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

モダン3Dゲームグラフィックプログラミングについて色々誤解していたという話

この2週間はUnityシェーダープログラミング本を書くために、3Dゲームグラフィックスの技術漬けになっていました。 もともと3DCGは避けていた(ADV畑の自分は今後も2Dのゲームしか作らないだろうと思っていたから)のもあり、10年分くらいの知…

ANTLR4をVisualStudio上で使う際の注意点

C#

tsukasaスクリプトをC#コードに変換するトランスパイラを作っています。当初はrubyのparsletで書こうと思っていたのですが、parsletが気軽に動かせる代わりに字句解析器と構文解析器が分離していない点や、C#のプロジェクトに統合できない点から中止し、ANTL…

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…

Unity Tips(3)

「Tips」と書いてはありますけど、単に土屋が導入時に気になった所をメモしてるだけです 【用語】アトラス ・複数の画像を1つの画像にまとめたもの。 ・複数の画像をアトラスにする作業を「アトラス化」とも言う。 ・UnityではSprite Packerなどで作成したS…

Unity Tips(2)

".mat"ファイルがショートカットとして認識されてしまう。 マテリアルデータを格納する".mat"ファイルが「Microsoft Office Access Table Shortcut」に関連付けられていて拡張子が表示されない場合(TortorizeGitで操作できなくて困った)。 対応 「コントロ…

Unity Tips(1)

お仕事でゲームエンジン研究をさせてもらえる事になりまして、現在Unityの勉強中です。ラーニング中で気づいたことや、はまったことについて雑多に書いていきます。間違っている個所もあるかと思うので指摘してもらえると助かります(いずれまとめられたらい…

冗長性の無いプログラミング言語を作ろう(3)「コーディング法の必要性について(?)」

今年後半は司エンジンを使ってゲームを一個作る予定で、次のuniq言語の記事はかなり先になりそうです。今回はメモも兼ねて、そもそもなんで冗長性の無い言語が必要なのかという話。 コーディング法(仮称) 第1回でも書きましたが、土屋はプログラマは国家…

冗長性の無いプログラミング言語を作ろう(2)

でまあ「冗長性がないプログラミング言語」とはどういう物かと言いますと、よくわかりません(爆)。設計の過程で「別に冗長性は関係ないな」となったらタイトルを変えます。 起点 今回新しく言語を作ろうと思ったきっかけは、複数のエンジニアさんと話をし…

冗長性の無いプログラミング言語を作ろう(1)

土屋はプログラミング言語の設計と実装が趣味です(この2年間くらい、本業以外で飽きもせずやっているのがこれだけだから趣味なんだと思う)。これまで作っていた司エンジン( http://d.hatena.ne.jp/t_tutiya/20170212/1486903365 )が、実用性はともかく…

「正しく書かれたソースコードにコメントは必要ない」なんて幻想だという話(補足編)

前回書いた「「正しく書かれたソースコードにコメントは必要ない」なんて幻想だという話( http://d.hatena.ne.jp/t_tutiya/20170519/1495197904 )」は土屋のブログ記事にしては珍しくはてブやコメント、twitterで反響を幾つか頂きました。その中の幾つかを…

「正しく書かれたソースコードにコメントは必要ない」なんて幻想だという話

土屋はプログラマの中でもかなりコメントが多いタイプだと思っています。理想を言えばコード1行ごとにコメントを書きたいくらいです(本当は、識別子を全部日本語で書きたいと思っているのですが、これはまた別の話)。 これは土屋がPDL(Program Design La…

「ゲームプログラミングにユニットテストを導入する本」PDF版を無料公開します

土屋つかさが書いた「ゲームプログラミングにユニットテストを導入する本」PDF版を無料公開します。以下のURLからどうぞ。 ゲームプログラミングにユニットテストを導入する本(土屋つかさ著/B5/本文26ページ) http://someiyoshino.main.jp/fil…

rubyゲーム開発にユニットテスト/テスティングフレームワークを導入する(6)【CI/AppVeyor編】

長々とやってきました「rubyゲーム開発にユニットテスト/テスティングフレームワークを導入する」シリーズもひとまず今回で一区切りになります(なぜならそろそろ作業を区切って同人誌の原稿執筆に入らないといけないからだ!)。今回はCIの導入です。 CI…

rubyゲーム開発にユニットテスト/テスティングフレームワークを導入する(5)【RSpec導入編】

前回(http://d.hatena.ne.jp/t_tutiya/20170209/1486646849)まではユニットテストのフレームワークとして、Rubyに標準添付されているMinitestを使用していました。Minitestは実装がコンパクトで、最小限の知識があればテストが実行出来て便利なのですが、…

rubyゲーム開発にユニットテスト/テスティングフレームワークを導入する(4)【モックの自動化(テストダブル)編】

前回(http://d.hatena.ne.jp/t_tutiya/20170205/1486285294)、キー入力を管理するオブジェクト(正確にはモジュール)をエミュレートするモックオブジェクトを作成し、それを差し替えることで、実際にキー入力を行わなくても、同等のテストが可能であるこ…