夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HandTrianglesShaderの理解を深める Color/Intensity 、Fill Color

本日はMRTKのHandTrianglesShaderの理解を深めます。

前回までShaderの処理を追っていきました。

今回からは具体的にパラメータが何を意味するのかを追っていきます。

〇Color Intensity

f:id:Holomoto-Sumire:20200603091523j:plain

IntensityはProperties{}でIntensityという変数で宣言されShader内部で使用されています。 また0~5のレンジを持ちデフォルトで5の値が与えられています。

_Intensity_("Intensity", Range(0,5)) = 5

Intensityはジオメトリシェーダー内677行目でResult_Q161.rgbに積算されています。

    Result_Q161.rgb *= _Intensity_;

Result_Q161.rgbはResult_Q161のrgb成分です。 Result_Q161はジオメトリシェーダー内676行目で値が定義されています。

Result_Q161 = lerp(float4(k,k,k,1),Color_Q157,float4(Saturation_Q160,Saturation_Q160,Saturation_Q160,Saturation_Q160))*(1.0-_Vary_Color_*Result_Q150)*Fade_Color_Q160;

Color_Q157(プロパティのAlbedoTexture)の最大値、最小値の間で色の線形補間(グラデーション)が行われています。Saturation_Q160はPulseにかかわる値です。(パルスで色のグラデーションを行う部分)

Vary_Colorはpropertyで設定される値です。

f:id:Holomoto-Sumire:20200603093536j:plain

Result_Q150もPulseのUVにかかわる処理です。

Fade_Color_Q160はfadeOutにかかわる値です。

つまりResult_Q161ではグラデーションパターン(線形補間)を行い_Intensityでその強度を設定しています。

〇Fill Color

f:id:Holomoto-Sumire:20200603094419j:plain

Fill ColorはProperties{}でFill_Colorという変数で宣言されShader内部で使用されています。

_Fill_Color_("Fill Color", Color) = (0.317647,0.317647,0.317647,1)

フラグメントシェーダーの783行目にFill_Color が使用されています。

 half4 Product_Q170 = _Fill_Color_ * Color_Q172;

Color_Q172はUV座標になります。

UV座標とFill_Colorの積がProduct_Q170になります。 つまりUVの座標によって_Fill_Colorの強さが変わります。