しゅみぷろ

プログラミングとか

Unite 2016 Tokyo まとめ(2日目)

はじめに Unite2日目で自分が聴講したものについてまとめます。 個人的に興味深かった講演については後日もっと深く掘り下げようと思っています。今回は大雑把にどんなことをお話しされていたか等を残しておきます。 講演の資料はこちらからDLできます。 Un…

Unite 2016 Tokyo まとめ(1日目)

はじめに Uniteで聴講させていただいたものをとりあえず整理してまとめておきます。 2日分まとめて書こうと思ったんですがめちゃくちゃ長くなりそうなので分割することにしました。2日目はまた後日。本記事では1日目の内容を書いていきます。 個人的に興…

1つのカメラでMRT出力を用いたPostEffectを実現する

はじめに 今までにも何度かCommandBufferを用いたエフェクトについて書いてきたので今更なのですが、Unityのコミュニティでの会話でなんとなくきっかけがあったので書いてみることにしました。 今回は1つのカメラでMRTによる出力を使ったPostEffectをしてみ…

Screen Space Reflection for Unity

はじめに UnityでSSR(Screen Space Reflection)に挑戦しました。 が、実際に出来たのは「SSRっぽい何か」です。 コア部分のみの実装のため、いわゆる「破綻を誤魔化す処理」は付加していません。 条件によっては結構不自然だったりします。 これを改善するた…

Forward RenderingのShadowingについて調べてみた

はじめに ForwardRenderingのShadowingについて調べたことをまとめます。 github.com 今回のサンプルでは以下の様な絵が出てきます。左2つの球はそれぞれvertex/fragment lightingを適用し、shadingを行ったもので、shadowingを行っていません。一番右の球は…

C# 5.0までの色々をメモしてたスライドを発掘した

めちゃんこ前にC#の勉強をはじめた時に書いていたメモ用のスライドを発掘しました。 間違ってたら当時の自分を殴って目を覚ましに行ってやってください。

RenderDocによるUnityシェーダーデバッグ

はじめに RenderDocでUnityのシェーダーをデバッグする方法を紹介します。内容はUnityマニュアルとほぼ同じですが、簡単に導入方法をメモしておきます。 docs.unity3d.com RenderDocは以下からダウンロードしてきます。 RenderDoc Downloads 使い方 RenderDo…

UnityでCommandBufferを使わないRaymarching

はじめに 以前、id:i-saintさんとid:hecomiさんの記事を参考にUnityでCommandBufferを使ったRaymarchを試しました。 こちらの記事で紹介させていただいています。 esprog.hatenablog.com 今回はCommandBufferを使わないRaymarchingについてです。 きっかけは…

VisualStudioによるUnityシェーダーのデバッグ

はじめに docs.unity3d.com VSによるデバッグの前にいくつか注意事項があります。 注意 Unity エディターは、内部に複数の子ウィンドウが含まれています。正しいウィンドウをキャプチャすることを確実にするために、「Maximize on Play」をチェックして、キ…

SceneビューでRaymarchingのプレビューをON/OFFする

esprog.hatenablog.com こちらで紹介したUnityでRaymarchingを行う際に使用しているスクリプトで、カメラに対してCommandBufferを追加しているスクリプトがあります。 これの問題点は、SceneビューではRaymarchingによる描画を見ることができないことです(実…

UnityでRaymarching

まえがき タイトルの通りで、UnityでRaymarchingを試してみました。以下でリポジトリを公開しています。 github.com 既にやっている方のを真似させて頂いただけですので、詳しく知りたい方はid:i-saintさんとid:hecomiさんの記事を参考にしてください。 この…

UnityでSceneビューのような視点移動ができるカメラを作る

つくったもの Unityでゲーム実行中(Gameビューで見てる時)、カメラをSceneビューと同じように操作できるようにするスクリプト書きました。 Gameビューでデバッグ用にカメラ移動して色々確認したりするのに便利です。 使い方 使い方はカメラに後述するスクリ…

Deferred Shadingについてまとめてみた

Unity5からの(Legacyでない)DeferredShadingについて自分なりにまとめてみます。 docs.unity3d.com Deferred レンダリングは、Orthographic プロジェクションを使用している場合はサポートされません。カメラのプロジェクション モードが Orthographic に設…

Forward Renderingについてまとめてみた

UnityのForwardRenderingについて自分なりにまとめてみます。 docs.unity3d.com ForwardRenderingで実行されるパス ForwardRenderingでは、1つかそれ以上のパスが実行されます。実行されるパスは Baseパス (ForwardBase) オブジェクトを1つのピクセルライテ…

ForwardRenderingとDeferredShading

西川善司の3Dゲームファンのための「KILLZONE 2」グラフィックス講座(前編) -GAME Watch docs.unity3d.com docs.unity3d.com ForwardRenderingとDeferredShadingについては上記サイトで詳しく書かれていました。 ここでは勉強を兼ねてForwardRenderingとDefe…

Shader Variantについて調べてみた

Unityシェーダーの基本についてはこちらでスライドにまとめています esprog.hatenablog.com 今回は上記のスライドの内容では扱っていないシェーダーのバリアントについてです。 色々とググッては見たのですが詳しく書いてあるサイトが見つからなかったため、…

紙をめくるアニメーションをするシェーダー作ってみた

めくりたい・・・めくりたくない・・・?? ということで、今回は紙をめくるようなアニメーションするシェーダー書きました! 今作ってるゲームが魔法の本の世界なので、こういったアニメーションが必要でした。 実装でやってることはx,yそれぞれめくった時…

背景のリピートとスクロール

容量の関係で画質がめちゃくちゃ荒いですが。。 背景画像は基本的にuGUIでバックグラウンドカメラのスクリーンスペースに対して表示させるようになっています。 この背景をプレイヤーの位置情報をもとにスクロールさせたかったので実装しました。 // 背景リ…

CustomRenderQueueで2時間迷走したお話

Debugモードでのみ見えるCustomRenderQueue。シェーダー書いてて挙動がおかしいから原因突き止めるのに2時間かかった。シェーダーが原因じゃなかった。激おこ。 pic.twitter.com/5vSxapl2KT — Es (@Es_Program) March 10, 2016 Debugモードで見れるここの値…

UIの遷移を作ってみた

色とか遷移の速度とかは調整中 マスクに使った素材はこちらからお借りしました。 For You | ぽけっとの中のいたち シェーダーはこんな感じ。 アルファ値でclipして、ピクセル色をゴニョゴニョしてます。 // gist683eb267815d27f647b6

Unityのシェーダーまとめスライドを作ってみた

予習復習を兼ねてスライドをまとめてみました。 4日くらいでガサッと作ったので、まだまだまとめきれていない項目やそもそも書いていない項目も多いです(途中で書くの飽た)。 なのでちょっと時間を置いてからまだ書けていない項目についてもまとめたいなぁと…

Layout/Repaintイベント間で表示コンポーネントが変化するとエラーになる問題について

Cygames Tech Fes フォローアップ: 内製タイムラインツールCuttの紹介 | Cygames Engineers' Blog Cygamesさんのサイトでかなり詳しく書いてあります。 問題はタイトルの通りです。 Layoutイベント後に表示するコンポーネントが変化したらエラーが出るので、…

Unityのサウンド管理(SoundManager)

ゲームサウンド管理のためにSoundManager作りました。 使用方法 基本的には「追加」「削除」ボタンでサウンドを追加していきます。追加時に、左のテキストフィールドからサウンドに一意な名前をつけておきます。 例えば「TitleBGM」という名前をつけて追加す…

全ての派生クラスの型情報を取得する

あるクラスの派生クラスの型情報をすべて取得したいケースがあったのでメモ。 あるクラスをTとして、以下のようにすれば取得できます。 skillTypes=Assembly .GetAssembly(typeof(T)) .GetTypes() .Where(t=>{ return t.IsSubclassOf(typeof(T)) && !t.IsAbs…

MacでUnity、VMのVisualStudioで編集

MacでUnityを開きつつ、そのプロジェクトのスクリプト等をVMのVisualStudioから編集する方法についてです。 ParallelsでもVMWareでもいいので、まずは仮想環境を整えましょう。 naichilab.blogspot.jp こちらを参考に、VisualStudioを仮想のWindowsにインス…

XML Schemaについて

Unityでゲーム内で実行されるイベントデータをXMLで管理しています。 このXMLの妥当性を検証するためのXML Schemaを書いてみたのでメモします。 まずXMLなのですが、大まかにこんな感じで使っています。 <Events> <Event eventID='ev_st00_001'> <SystemControl> <TimeStop>true</TimeStop> <Input> <DisableGroup>Player</DisableGroup> <DisableGroup>…</disablegroup></systemcontrol></event></events>

ParallelsのアップデートでUnityの表示が改善された話

以前ParallelsでWindowsのUnityを開くといろんなWindowの色合いがおかしくなる問題の解決策を書きました。 esprog.hatenablog.com 3Dアクセラレーションの設定をいじっていたのですが、Parallelsのバージョンを更新することで解決されました。 ちなみに現在…

エディター拡張について

めちゃくちゃ参考になるスライド。 Extending the Unity Editor from Masamitsu Ishikawa www.slideshare.net インスペクター拡張についてです。内容は初歩的なことです。 とりあえず、インスペクター拡張を試した基本的なサンプルを。 using System.Collect…

VisualStudioをMergeToolとして使う

今まではvimdiffを使ってきたのですが、普段はVisualStudioでC#書くことが多いため、VisualStudioで便利に出来たらなぁということで記事書きました。 もともとVisualStudioでリポジトリの管理ができますね。ソース管理に追加して、あとはチームエクスプロー…

UnityでのSingletonについて

UnityのMonoBehaviourをSingletonにしたい時って結構ありますよね。 調べれば、シンプルなSingletonMonoBehaviourの実装とかそんな感じですごいたくさん出てきます。 しかし、公開されているものの中には結構用法によっては不便に思えるものが多かったりしま…