はじめにUnity 2018.1b より Scriptable Render Pipeline (SRP) というレンダリングパイプラインをより細かくコントロールできる機能がリリースされました。SRP の登場により、従来の Forward / Deferred に加え、新たに Compute Shader を活用し SSS などのマテリアルにも対応したハイエンド向け高画質パイプライン(HDRP)と、シングルパスでライトの計算も可能なモバイルやVR において有力な軽量パイプライン(LWRP)が公式の実装として提供されることになりました。さらに、これらはアセットとして提供されるため、我々の手でもカスタマイズ可能で、また一から自分で作成することも出来ます。本エントリではこの SRP について、新しく追加されたパイプラインをサラッと紹介するのと、公式で公開されているシンプルなサンプルを読み解

弊社はVRで建物を作ることがよくあります。 特に屋内の場合はリアルな影や陰影を表現するために、 リアルタイムGIではなくライトマップのベイクが不可欠です。 しかし、ライトマップというモノは「そこがどれだけ明るいか」という情報しかなく、 ベイク後はリアルタイムライトが効かなくなってしまうので、 質感の肝である「鏡面反射」を表現することができずに、のっぺりとした画になりがちです。 (Directional Specular がなくなってしまいました。Unity4の時は重宝したものです。) それをカバーするために、Reflectiopn Probe を配置するのですが、何か物足りません。 やはり、リアルタイムライトのシャープなスペキュラーが欲しいところです。 ライトを追加すればいいじゃん スペキュラーを出したいのなら、新たにライトを追加すれば良いのでは? そうです、ライトが無いと何も始まりません

今回は次世代機などで使用されているパーティクル描画の最適化手法である大量のパーティクルを描画するオフスクリーンパーティクルについてのまとめです。 ディファードレンダリング と リアルタイムのテクスチャレンダリング のサポートが必要になりますので プロバージョンの使用が前提です。そして現在Unityはモバイルのディファードレンダリングをサポートしていません。 ですのでPCでの使用に限られていまいますが、プロ版をお持ちでない方も こういう高速化技術があることを覚えておいていずれ活用していただければと思います。 デイファードレンダリングがどのようなものかを知っておく必要があります 。 日本語でわかりやすかったのが ■ 西川善司の3Dゲームファンのための「KILLZONE 2」グラフィックス講座(前編) PS3のハイクオリティグラフィックスはDeferred Shadingでキマリ!? http:

2年前の秋に遅延シェーディングのお話をしましたが、あらためて読み返してみたところ、ビュー空間の深度から求めたジオメトリの位置がおかしいことに気づきました1。 今日は、今秋にふさわしい深度の再構築方法 (reconstructing position from depth) について見直していきます。 前回のシェーダー(悪い例) 前回の日記では G-Buffer にビュー空間の深度値を書き込み、必要に応じて深度から ライティングパスでポイントライトなどを実装するためには、ワールド空間(またはビュー空間)のジオメトリの位置が必要です。 これを G-Buffer の深度値から求めるために次のようにしていました: // The following code is bad example. vec3 DepthToPosition(in vec2textureCoord, in float dep
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
はじめに 過去幾つかの記事でディファードシェーディングのレンダリングパスで G-Buffer を色々いじることをやってきました。その際、G-Buffer に与える出力は適当な値を与えてきましたが、実際はもう少し真面目にやらなければなりません。というのも本来はエミッションのバッファにはエミッシブ値以外にもアンビエントや、ライトプローブ、GI といった事前計算された情報も書き込まれているからです。 デファードシェーディングレンダリングパス -Unity マニュアル 例えば Anbient Intensity を変えてみると良くわかります。球が前回と同じくレイマーチで作成した球、床や立方体はデフォルトのマテリアルを使用しています。球のエミッションバッファの値は 0.0 になっています。 一方、スタンダードサーフェスシェーダを利用するとこのようにはならず、適切にライティングされます。しかしながら

As I promised, here are the slides I presented at Siggraph 2012. It's about Screen Space Decaltechnique I developed for Space Marine Althoughit was independently developed,it's verysimilar to othertechniques. such as Deferred Decals. However, I believe we were the only game who used thistech very extensively in a game. So I focused more on the problems we had, and the solutions we used to
Unity 5.5でRender Path(ForwardやDeferredを設定してたアレ)の表示がPlayer Settingsから別の場所へ移動しました。 新しいRender Pathの設定場所 Standard Shader Qualityの設定も 関連 新しいRender Pathの設定場所 新しい場所は、Project Settings > Graphicsの…ココ。 見つけられるか…ッッッ とりあえずボタンのUI以外にボタンを入れるのをやめよう(期待 Standard Shader Qualityの設定も あと、今までPCはHigh モバイルはLowを半ば強制されていたStandard Shaderのクォリティをココで調整出来るようになりました。 ココでモバイル向けにStandard Shaderのクォリティを上げ(多分CPU・GPU負荷がかなり上昇)するも良し、逆にモバイル

はじめに ブーリアン演算とは様々な形状を集合演算(足し合わせる(和)、一方から他方を引く(差)、一致する部分を抜き出す(積)など)によって作成する手法です。 ブーリアン演算 -Wikipedia ConstructiveSolid Geometry -Wikipedia いくつかの実装方法があると思いますが、スクリーンスペースで G-Buffer を加工することでこれを実現するUnity での実装を id:i-saint さんが作られており、実装も公開されていました。 playing withUnity 5's deferred shading pipeline - primitive:blogGitHub - i-saint/Unity5Effects G-Buffer 加工による利点は 3D ソフトなどで見られるメッシュ自体の変形に比べ、多数のオブジェクトを組合せ爆発しな

はじめに id:i-saint さんのこちらの記事(rendering fractals inUnity5 - primitive:blog)に触発されて勉強中です。Raymarching はポリゴンベースでなく、距離関数(distance function)と呼ばれる数式を元にオブジェクトをレンダリングする方法で、工夫次第でスゴイ画が作れるテクニックです。 raymarching for games - primitive:blog wgld.org | GLSL: レイマーチングで球体を描く | 全能感UP! GLSLで進めレイマーチング « demoscene.jpUnity では先の記事で解説したように Command Buffer を使うことによって Deferred Rendering で使う G-Buffer を直接操作することが可能で、G-Buffer へ raym

はじめに 前回に引き続き Raymarching 関連記事です。 G-Buffer に Raymarching して描画したオブジェクトではポリゴンのオブジェクトから影を受けることは出来るのですが、Raymarching したオブジェクトから自身とポリゴンのオブジェクトへの影を作ることが出来なかったため、以下の解説にありましたスクリーンスペースシャドウを試してみました。 playing withUnity 5's deferred shading pipeline - primitive:blog 例 なんかゴテゴテした画になってしまいましたが...、Raymarching したオブジェクトでもポリゴンベースのオブジェクトでも光が遮られているのがお分かりいただけると思います。 Raymarching 時に行った場合 コード Screen Space Shadow に入る前に wgld.

WebGL brings hardware-accelerated 3D graphics to the web. Many features of WebGL 2 are available today as WebGL extensions. In this article, we describe how to use the WEBGL_draw_buffers extension tocreate a scene with a large number of dynamic lights using atechnique called deferred shading, which is popular amongtop-tier games. live demo • source code Today, most WebGL engines use forward sha

おなじみの遅延シェーディング (Deferred Shading) を実装しました。昨年の夏に OpenGL で実装して以来、1年ぶりになります(こちらの記事を参照)。今回実装したのは、いわゆる古典的遅延シェーディング (Classic Deferred Shading) と呼ばれ12広く知られている遅延シェーディングです。今回は触れませんが、この遅延シェーディングを発展させたテクニックには Light Pre-Pass や Forward+ があります。 遅延シェーディング 遅延シェーディングについてざっくり説明すると: 最初のパスでは、レンダーターゲット(またはフレームバッファ)にオブジェクトのアルベド(テクスチャカラー)や法線、深度、ワールド空間での位置などを書き込みます。(A) 次のパスでは、レンダーターゲットをサンプリングしながらシェーディングを行います。(B) 最初のパス (A
Unity は標準で deferred rendering をサポートしていますが、これは light pre-pass とか deferred lighting と呼ばれるもので、deferred shading とはちょっと違います。私が必要としているのは deferred shading の方なので、これをUnity で実装してみました。 https://github.com/i-saint/DeferredShading deferred shading 自体の詳しい解説はここでは省略しますが、 大雑把には render target を複数用意し、ポリゴン描画パスではそれらに法線、位置、diffuse 色などシェーディングに使う情報を格納 (これらは geometry buffer、略して G-Buffer と呼ばれます)、その後 G-Buffer を利用してポストエフェクト的

はじめにUnity 5 より利用できるようになった CommandBuffer を利用するとレンダリングパイプラインを拡張して色々な表現が可能となります。公式ブログにこの詳細が書いてあり、サンプルもブログ中またはドキュメント上で配布されています。 (English) ExtendingUnity 5 rendering pipeline: Command Buffers –UnityBlogUnity - マニュアル: グラフィックスコマンドバッファ 他に CommandBuffer を使ったもので有名なものとしては、 id:i-saint さんの作品が挙げられると思います。 rendering fractals inUnity5 - primitive:blog object space raymarching - primitive:blogGitHub - i-sa

Unity 5.3で導入予定だったCinematic Image Effects(シネマティックイメージエフェクト)を試しに使ってみます。 シネマティックイメージエフェクトの導入 シネマティックイメージエフェクトの利用 スクリーンスペースなリフレクションの利用 トーンマッピングとカラーグレーディング 新しい被写体深度(DOF) 関連 シネマティックイメージエフェクトは現在、AssetStoreとオープンソースにて提供されており、完成したらStandard Assetsに入るって感じになりそうです。 現在はスクリーンスペースな反射(SSR)、トーンマッピングとカラーグレーディング、アンチエイリアス(SMAA)、被写体深度(DOF)のみですが、今後はバリエーションを増やすそうです。BloomはよBloom!!!!(PC向けの超綺麗なのとモバイルで動くのが別コンポーネントになってるのが個人的には

レイトレース処理での一番大事な部分、交差判定について記述します。ここではレイ(視点位置と視線ベクトルを持つ)とポリゴン(三角形)との交差判定になりますね。 単純な交差判定 三次元空間上のポリゴンをX/Y/Z軸を圧縮する形で2次元に投影してしまいます。これは、X-Y平面への投影・X-Z平面への投影・Z-Y平面への投影の3つの投影があります。一番確実なのは(誤差を少なくするのは)それぞれの面に投影した場合の面積を計算して、一番面積の大きい面に投影するとするといいです。 上図の場合は、X-Z平面に投影しています(三角形の頂点座標のうち、X/Z成分のみを取り出します)。 また、レイの方向ベクトルと面の法線ベクトルにより「直線と面の交点位置」を求めます(これは3次元空間での処理)。このときに交点が求まります。が、三角形内に内包されているかは分かりません。これを、X-Z平面に三角形を投影している場合は
概要 以前に軽く Unreal Engine4(アンリアルエンジン4)のシェーディングについて説明しました. (http://d.hatena.ne.jp/hanecci/20130719) これに関連して SIGGRAPH 2013 でより完全な資料が公開されましたので, この記事では "Real Shading in Unreal Engine 4" SIGGRAPH 2013 について説明します. 参考文献 Unreal Engine4 のシェーディング. "Real Shading in Unreal Engine 4". Brian Karis. SIGGRAPH 2013 Course: Physically Based Shading in Theory and Practice http://blog.selfshadow.com/publications/s2013-sh

遅延レンダリングを WebGL で! 3D プログラミングの分野には、いわゆる遅延レンダリングと呼ばれている手法があります。英語で表記すると Deferred Rendering ですね。 この方法は、MRT(Multi Render Target)と呼ばれる技術を用いて実現するのが一般的であり、WebGL は MRT をサポートしていません。今回紹介する方法はそれとは違ったアプローチで、同様の結果を実現しているサンプルです。 実際に実行できるデモへのリンクもありますので、ぜひチェックしてみてください。 そもそも Deferred Rendering とは? 遅延レンダリング、または遅延シェーディングと呼ばれる技法は、従来の WebGL の一般的なレンダリング技法とはちょっと違います。 誤解を恐れずにものすごくざっくりと説明するなら、遅延レンダリングとはポストエフェクトのようなもので、ジ

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く