イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

2019-06-01から1ヶ月間の記事一覧

shader テクスチャバグMk-4

テクスチャバグシェーダMk-4Mk2と違い、ズレた分消えるのではなくズレるだけになっている pic.twitter.com/CLonMBNIQt — 光属性のアルモジナ(VRChat勢) (@arumogina) June 29, 2019 Boxにセット Shader "Custom/TexBugZure" { Properties{ _DownSPD("DownSP…

shader テクスチャバグMk-3

テクスチャバグシェーダMk-3 pic.twitter.com/ytO6fLxZgT — 光属性のアルモジナ(VRChat勢) (@arumogina) June 29, 2019 アバターに付与する Shader "Custom/SetStencil" { Properties{ _MainTex("MainTex",2D) = "white"{} _Width("Width",Range(-1,1)) = 0…

shader テクスチャバグMk-2

テクスチャバグシェーダMK-2 pic.twitter.com/RQrpXIHOEh — 光属性のアルモジナ(VRChat勢) (@arumogina) June 29, 2019 //Box内に入ったものにZureを発生させる //ステンシルを使ってるため横にずれたぶんのステンシルからはみ出た部分は消えてしまう Shade…

shader 3DBillboard

o.posに代入している値は、スケール、トランスフォームを無視して座標変換を行っている。 (これらの要素はワールド変換行列が含まれる) float4(0,0,0,1)を変えれば任意の位置に移動できる Shader "Custom/Billboard"{ Properties{ _MainTex ("Texture", 2D…

shader Box内に入ったオブジェクトを黒くするやつ、with ZTestとステンシル

pic.twitter.com/xPc5sirXSa — 光属性のアルモジナ(VRChat勢) (@arumogina) June 28, 2019 1pass目はComp Alwaysなのでステンシルは常に通る。 CullFrontしているので、Boxの裏側が見えない場合ZFailとなり1が書き込まれる。 2pass目はCullBack,ZTestGreate…

shader ZTestとRender Queue

++基本 ・ZTestはデプステストとも呼ぶ。ZTestはその時点でデプスバッファに書き込まれている値(以降、z値)と比較することで行う ・ unityのz値はカメラに近い方が低く、遠い方が高い。 ・オブジェクトはQueueの順番に処理され、Queueの値が低いほど先に…

shader Box内に入ると黒くするやつ ステンシル+視界ジャックver

pic.twitter.com/0VQDInrpvn — 光属性のアルモジナ(VRChat勢) (@arumogina) June 27, 2019 Box Shader "Custom/StencilBox" { SubShader{ Tags{"RenderType"="Transparent" "Queue" = "Transparent+99999"} Blend SrcAlpha OneMinusSrcAlpha Pass{ Stencil …

距離関数を使ったカメラとの当たり判定

Box当たり判定サンプル pic.twitter.com/RFFIVqJouC — 光属性のアルモジナ(VRChat勢) (@arumogina) June 27, 2019 カメラが任意のBoxの形の中に入ってるか判定し、入っていれば箱の色を黒に、なければ白の半透明にしている。 Shader "Custom/BoxLengthJudge…

shader utils

https://qiita.com/keim_at_si/items/c2d1afd6443f3040e900 HSV https://docs.unity3d.com/ja/2017.4/Manual/SL-UnityShaderVariables.html ビルトインシェーダ変数 プロジェクション行列の逆行列 unity_CameraInvProjection カメラのアスペクト比の取得 htt…

shader GrabPass Base

tex2DProjはgpos.xy/gpos.wを行ってtex2Dを使うのと同じ。 w除算した場合の範囲は0~1 https://twitter.com/arumogina/status/1245004048849223685 Shader "Custom/GrabPassBase" { SubShader{ //透明部分のあるテクスチャを使う場合 Tags{"Queue" = "Transpa…

shader 配列の扱い

初期化 int a[2] = {1,2}; int a[2][1] = {{1},{2}}; float2 a[1] = {float2(1,1)}; float2 a[1][1] スカラーは多次元配列の初期化が出来るが、ベクトルは無理っぽい 返り値の指定 void xtest(out float2 a[1]) void xtest(out float a[1]) はout記法を使っ…

shader TexBugシェーダ、vertex ver

ParinNoise #include "UnityCG.cginc" float4 permute(float4 x){ return fmod(34.0 * pow(x, 2) + x, 289.0); } float2 fade(float2 t){ return 6.0 * pow(t, 5.0) - 15.0 * pow(t, 4.0) + 10.0 * pow(t, 3.0); } float4 taylorInvSqrt(float4 r) { return …

vrchat 関連情報

++カメラの仕込み方 カメラを空のオブジェクトの直下に配置して空のオブジェクト(以降A)を適当な場所に配置。 アニメーションオーバーライドでAを表示するアニメーションを作成 cameraのcameraコンポーネントをデフォルトでオフにしておき、cameraオブジェ…

shader ジオメトリシェーダbase

Shader "Custom/GeoBase" { Properties{ [Enum(UnityEngine.Rendering.CullMode)] _Cull("Cull", Float) = 2 // Off [Enum(UnityEngine.Rendering.CompareFunction)] _ZTest("ZTest", Float) = 4 // LEqual [Enum(Off, 0, On, 1)] _ZWrite("ZWrite", Float) …

shader billboard

Quadに貼り付けての使用を想定 Shader "Custom/Billboard"{ Properties{ _MainTex ("Texture", 2D) = "white" {} _Scale("Scale",Range(0.1,1)) = 0.4 } SubShader{ Tags { "Queue"="Transparent" "RenderType"="Transparent" "DisableBatching"="True" } Bl…

Shader NoData風

NoData風シェーダ pic.twitter.com/XvLZMNCOXS — 光属性のアルモジナ(VRChat勢) (@arumogina) June 18, 2019 Shader "Custom/NoData3" { Properties{ _XColor("XColor",Color) = (1,1,1,1) _XCLimit("XCLimit",Range(0,9)) = 1 _YColor("YColor",Color) = (…

shder ノイズ?生成

Quadに貼り付けて、生成されたテクスチャをキャプチャして使用する Shader "Custom/CreateNoise" { Properties{ _Frec("Frec",Range(1,200)) = 1 _Param("Param",Range(0,200)) = 1 _From("From",Range(0,1)) = 0 _To("To",Range(0,1)) = 1 } SubShader{ Pas…

shader shaderだけでカメラの前にテクスチャを貼る方法

実際にやってみると視点を動かすとメッシュが消える場合がある。そのような場合はBoundingBoxを大きくすると解決する。 BoundingBoxを小さくしてもそれが視界内に入ってる限り描写されるので、BoundingBoxの設定で一定範囲に入った場合のみ表示する、という…

Shader frag Base

Shader "Custom/FragBase" { Properties{ [Enum(UnityEngine.Rendering.CullMode)] _Cull("Cull", Float) = 2 // Off [Enum(UnityEngine.Rendering.CompareFunction)] _ZTest("ZTest", Float) = 4 // LEqual [Enum(Off, 0, On, 1)] _ZWrite("ZWrite", Float)…

Shader 影絵シェーダ

基本的な仕組みとしてはBox内の内側を指定した色にする。 Boxの開放部にGrabTextureを仕込んだシェーダを持つPlaneを設置し、そのGrabTextureの色が指定した色でなければ黒、にしている boxに仕込むシェーダ Shader "Unlit/TVShader" { Properties { _MainTe…

shader Boxの中に入ったものだけ黒くするシェーダ

Shader "Custom/ShadowPic" { SubShader{ Tags {"RenderType"="Transparent"} GrabPass { "_GrabPassTexture" } Stencil { Ref 1 Comp always Pass replace } Cull Front Lighting Off CGPROGRAM #pragma surface surf Lambert alpha struct Input { fixed3 …

Shader ステンシルを使った改良版アウトライン

左が改良版、右が法線方向に伸ばしてアウトラインの上をテクスチャが上書きする方式 Shader "Custom/Outline2" { Properties{ _Color("Color",Color) = (1,1,1,1) _OutlineWide("OutlineWide",Range(0.,0.2)) = 0. _OutlinePow("OuwlinePow",Range(0,5.)) = …

Shader ステンシルバッファ

Shader "Custom/HideStencil" { Properties{ _MainTex ("Texture",2D) = "white" {} } SubShader{ Tags { "RenderType"="Opaque" "Queue"="Transparent+1"} Pass{ Stencil{ Ref 1 Comp Equal } Cull Off CGPROGRAM #pragma vertex vert #pragma fragment fra…

Shader SpeiaGrab

Shader "Custom/SepiaStencil" { Properties { _Color ("Color", Color) = (1,1,1,1) _SepiaIntensity ("SepiaIntensity", Range(0, 1)) = 0 } SubShader { Tags {"Queue"="Transparent" "RenderType"="Transparent" } GrabPass { "_GrabPassTexture" } Cull…

ShadersLaboratryのサンプルを読んでいく記事-Geometry

Shaders ++ Demo 90 - Flat shading float3 vecA = IN[1].vertex - IN[0].vertex; float3 vecB = IN[2].vertex - IN[0].vertex; float3 normal = cross(vecA, vecB); normal = normalize(mul(normal, (float3x3) unity_WorldToObject)); 1点を中心として…

shader ジオメトリシェーダ・サンプル

ジオメトリシェーダ、サンプル pic.twitter.com/3ZapVt5VW2 — 光属性のアルモジナ(VRChat勢) (@arumogina) June 8, 2019 ++参考 HoloLens で使える Near Clip 表現について解説してみた - 凹みTips ジオメトリシェーダ入門 - e.blog ++コード 上記の参…

shader ラスタライザについて

ラスタライザの実際の動きについて理解してなかったので、それについてメモっておく。 ++ラスタライザの基本的な役割 頂点間の線形補完を行う。以下のような理解をしておけばシェーダを書くだけなら問題ないと思われる 図のようにラスタライザはvertからfr…

レイマーチングについて

++レイマーチングとは何か? メッシュではなく、距離関数を用いてオブジェクトをレンダリングする手法。フラクタル図形や無限繰り返しが可能であり独特の表現が可能になる ++レイマーチングの原理 固定長進行レイマーチングやってみたので簡単なサンプル…

ShadersLaboratryのサンプルを読んでいく記事-post rendering

post renderingはオブジェクトではなく、カメラにスクリプトを付与する必要があるため一部c#スクリプトを必要とする。 ++post rendering,ポストエフェクトとは何か? Unityでの水彩画風ポストエフェクト - Qiita 引数としてレンダリングされた結果をRender…

ShadersLaboratryのサンプルを読んでいく記事-surface

Demo 23 - Wireframe like step(a, x) (x >= a) ? 1 : 0 を返します。 frac(x) x の小数部を返します。 step(_LineWidth * 2, frac(IN.worldPos.x / _ParcelSize) + _LineWidth); frac(IN.worldPos.x / _ParcelSize)は0~1の少数でループする周期的な値を返す…