この記事はUnityアドベントカレンダー2020、2日目の記事です。 qiita.comUnityについての質問で、次のような質問をよく見かけます。 「特定の物体にだけポストエフェクトを掛けることはできますか?」 これは一応可能ですが、UnityのレイヤーはPhotoshopのレイヤーとは全くの別物で、めちゃくちゃめんどくさいため初心者にはおすすめしません。 どうしてそんなことがしたくなったのかを聞いてみると、「特定の物体だけをBloomで光らせたい」という目的が出てくることが多いです。 これは結構簡単にできるので、やり方をまとめてみました! そもそもBloomってなんだ? 現実世界のカメラや人間の目は、レンズを通して入ってきた光をセンサーで検知して「色」を判別します。 ですが、この光は全てがまっすぐ目に届くわけではありません。 ごくわずかな光がカメラの内部構造・レンズ・空気など(!)に

Unity’s Scriptable Render Pipeline represents a great advance on the way thatunity deals with graphics, giving more power to the users to customize the pipeline the way they want. I have started to use the Universal Render Pipeline (URP) recently and, despite allits advantages over the built-in pipeline,it still suffers of lack of documentation. I mean, you can find information of every functio
GraphicsBuffer とは ComputeBufferの汎用性を高めた上位互換で将来的に代替するものです。Unity 2020.1からComputeBufferが使えるほぼすべての局面[1]でGraphicsBufferも使えるようになったので、もはやComputeBufferを使う理由がなくなりました! 何がかわったのか インデックスバッファ、頂点バッファとして使えるようになった[2] Mesh.triangles、Mesh.verticesのかわりとして使えるイメージです。ComputeShaderで計算した結果をGraphicsBufferに書き込んで表示用のシェーダーに渡すことでCPU側にコピーすることなく動的なメッシュを表現できます。 以前からComputeBufferを表示用シェーダーで参照することで同様のことが可能でしたが、新たにDrawProcedural*系の関

最近、1ツイート(280文字)内にシェーダーをおさめる つぶやきGLSL というものが流行っています。 一見「もうこれ以上詰められないよ~」となってしまっても、よくよく探すと意外なところを削れることがあったります。 この記事では、自分が使っている、つぶやきGLSLで文字を詰めるためのテクニックをチートシートとしてまとめてみました。 つぶやきGLSLの作例 #つぶやきGLSL void main(){vec3 p;for(int i=0;i<32;++i)p+=vec3((gl_FragCoord.xy*2.-r)/r.y,1)*(length(cos(p))-length(sin(t/.1+p/.2))*.6*s)*.5;gl_FragColor=vec4(5./p.z*s);} vec2 mainSound(float t){int i=int(t*=1e3);return vec2((

ノイズといえば、砂嵐のようなランダムノイズから連続性を保ったパーリンノイズまで様々なノイズが考えられています。残念なことにUnityのシェーダにはノイズを生成するメソッドが用意されていないため、プログラムを作る必要があります。 この記事では、Unityでランダムノイズ、ブロックノイズ、バリューノイズ、パーリンノイズ、fBmを作る方法を見ていきましょう。 ランダムノイズ ブロックノイズ バリューノイズ パーリンノイズ fBmノイズ まとめ&参考書 ランダムノイズ ランダムノイズとは場所や時間に依存せずに全くのランダムに値を決めるノイズのことです。テレビの砂嵐(古い!)と同じものですね。 www.youtube.com まずはノイズ生成の基本になるランダムノイズを表示するシェーダを作ってみましょう!シーン中にノイズを表示するための平面モデルをUnityのシーンビューに配置して、そこにシェーダプ

UnityのシェーダでノーマルマップのZ値を使って情報量を増やした発光表現を紹介します。 やりたいこと ノーマルマップのZ値を使って情報量を増やす レンダリング結果 関連Unity2019.2.10 やりたいこと いま、下図のようなモデルが描画されているとします。ゲームでは、武器やキャラクターの演出で輪郭部分を発光させることがよくあります。 この場合よく行われる実装が視線ベクトルと法線の内積を使って云々する方法です。 シェーダで表現するとこんな感じになります。 Shader "Example" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) = "white" {} _MetallicMap ("Metallic", 2D) = "white" {} _BumpMap("N

モバイルにおけるブラーの軽量化に関する考察です。 ブラーは重い ボックスフィルタリングでダウンサンプリング 精度の高いカーネルを使う 2回縮小バッファに描き込む 結果 関連Unity2019.2.10 ブラーは重いゲームの演出に置いて、ブラーは頻繁に使われる処理です。 単純なぼかし処理以外にも、ブルームやDepth of Fieldといったポストエフェクトの処理にも使われます。 しかしこのぼかし処理は総じて重い処理になりがちです。 例えば前紹介したガウシアンブラーも決して軽い処理ではありません。 light11.hatenadiary.com 結局のところ、綺麗なブラーを作ろうとするとテクスチャサンプリング数が多くなり重くなってしまいます。 しかし実際には綺麗さよりも処理負荷の小ささを優先したい場合もあるはずです。 そこでこの記事では軽いブラーを実装する方法について考えてみます。 ボッ

Clear Flags は Depth only に設定。 Projection は平行投影 の Orthographic を設定。 TargetTexture に先程作成した深度バッファテクスチャを設定。 Rendering Path は深度描画時の Forward に設定。 Orthographicのサイズはメートルのようです。 ここまでで、深度バッファに描画するオブジェクトができました。 実行してみると、深度バッファに内容が書き込まれるのがわかります。 あとはこいつを参照しつつ、メインのテクスチャを描画するシェーダーを書いて、Projector に設定すれば完成です。 4,プロジェクターのシェーダー作成 深度バッファを見ながらカラーテクスチャを描画するシェーダーを書きます。 DepthProjector.shader /*******************************
UnityでSNNフィルタのポストエフェクトを掛けてレンダリング結果を絵画風にする方法をまとめました。 SNNフィルタとは? アルゴリズムの解説 シェーダを書く ポストエフェクトとして適用する 結果 関連 参考Unity2019.2.6 SNNフィルタとは? SNNフィルタとはSymmetric Nearest Neighborフィルタの略で、 もともとは画像のノイズを目立たなくするために考えられたフィルタのようです。 subsurfwiki.org これを強めに適用することで結果を絵画風にすることができます。本記事ではこのSNNフィルタのアルゴリズムを解説し、実際にシェーダを書いてみます。 アルゴリズムの解説 いま、以下のように中央のピクセルとその周辺のピクセルを考えます。 これからSNNフィルタにより中央のピクセルに適用する色を求めます。 まず一番左上のピクセルと、それと対角線上に

In this tutorial we’ll be learning how to use Custom Vertex Streams for particle systems inUnity. Vertex streams are set through a particle system’s Renderer module and can be used to pass in additional per-particle data to a shader. The shader can then use this data tocreate a range of effects unique to each particle in the system – all processed on theGPU atblazing fast speeds. [IMAGE REMOVE
サムネ用 なにをやったか 今回はUnityのHDRPのシェーダーを改造して、HDRPのシーン上にレイマーチングオブジェクトを表示しました!Unity HDRP + Raymarchingのプロジェクト公開しました! 興味があれば動かしてみてください!!https://t.co/hcBJKSWzC9 コードの整理ができたらブログに情報を残します#unity3d #raymarching pic.twitter.com/6Jc0HeeOAB— かねた (@kanetaaaaa) 2019年8月11日 がむさんによる作例もありますUnity HDRP + Raymarching by @kanetaaaaa を試してみました! カッコいいシーンが無限に作れてしまう😍 これは凄いです🙏#unity3d #raymarchinghttps://t.co/EK6JsHpTBZ pic.twit

Unityで3Dモデルを普通に描画するとポリゴンが表示されます。ここではポリゴンの頂点だけをポイントで表示する方法を紹介します。 頂点の表示方法を変えるだけなら、なんと2行のスクリプトだけですみます。それぞれの頂点に異なる色をつける場合はシェーダを使っています。 トポロジをポリゴンからポイントに変更する 3Dモデルの頂点情報はMeshで管理されていて、その頂点をどのように描画するかはMeshTopologyで定義されています。通常は面を描画するためにTrianglesトポロジが選択されています。 MeshTopologyには次のような種類があります。 トポロジ名 形状 Triangles 三角形 Quads 四角形Lines 線LineStrip 線分 Points 点 ここでは、頂点をポイントで表示するためにMeshTopology.Pointsを指定します。ワイヤーフレームで表示し

Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? とりあえずこの映像を見てください。 昨日の勉強会の懇親会中に20分間のライブコーディングでシェーダーを作りました! 初めて人前でコーディングをしたんですが、めちゃくちゃ楽しかったです!! (当日動かなかったpmod修正済です...) 差分 - q.x = abs(p.x ) - 10.; + q.x = abs(q.x ) - 10.;https://t.co/LH3TT4YzSU#klab_meetup pic.twitter.com/k61c3O2ZA1 — かねた (@kanetaaaaa) 2019年6月19日 20分間のライブ

You've probably run into terrain where the steep sides of a cliff have theirtexture stretched so much thatit looks unrealistic. Maybe you have a procedurally generated world that you have no way to UV unwrap andtexture. Tri-planarmapping provides an eleganttechnique to solve these issues and give you realistictextures from any angle or on any complexshape. Here you will learn about thetech

demoscene の世界では近年 raymarching というレンダリング手法がよく用いられています。ポリゴンモデルは使わず、モデルデータは数式の図形としてシェーダコードの中で表現し、pixel shader で図形との距離を求めて可視化していく、というものです。 demoscene (4k/64k intro) の厳しい容量制限の中綺麗な絵を出すために生み出された手法ですが、従来のポリゴンベースの手法では難しい独特の絵を出すことができるという副次的効果があります。 raymarching の代表的な作品群 この手法は PS4 世代以降、小規模ゲーム開発チーム向けの有用なツールになるんじゃないかと考えていて、atomic では試しに背景にこの手法を用いています。以下はその過程や考察です。 まず、raymarching の基本については demoscene.jp の人たちが素晴らしい解説

はじめに はじめまして、ドリコムでエンジニアをやっているイシカワと申します。普段の業務ではモバイルゲームの開発に携わっています。 アドベントカレンダーの参加は今回が2回目。一昨年は3Dプログラミングについてこんな記事を書きました。今年はモバイルグラフィックス分野から個人的に気になったトピックを紹介します。 シーグラフが示す少し先の未来 今年のシーグラフ開催から数ヶ月後、おもむろにプレゼン資料を読み漁っていたところ、「Moving Mobile Graphics」というコースの存在を知りました。コース概要を読むと、どうも3年前に新設されたコースで、主な目的は最先端のモバイルグラフィックスの技術紹介ということ。お題目には、2018年の技術トレンドを反映して「XR」をテーマにした発表が並んでいます。 そんな中、UnityTechnologies による「Maximizing Rendering

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