Skip to content

ユーティリティ

レンダリングパイプラインやAPIの差を吸収するためのマクロや関数が用意されています。より詳しくはHLSLファイルをご確認ください。

テクスチャ

名前説明
TEXTURE2D(_Tex)Texture2D _Tex
SAMPLER(sampler_Tex)SamplerState sampler_Tex
LIL_SAMPLE_2D(Texture2D _Tex, SamplerState sampler_Tex, float2 uv)_Tex.Sample(sampler_Tex, uv)

トランスフォーム

名前説明
LIL_MATRIX_Mワールド行列
LIL_MATRIX_I_Mワールドの転置行列
LIL_MATRIX_Vビュー行列
LIL_MATRIX_Pプロジェクト行列
LIL_MATRIX_VPビュー&プロジェクト行列
float3 lilTransformOStoWS(float4 positionOS)オブジェクト座標からワールド座標への変換
float3 lilTransformOStoWS(float3 positionOS)オブジェクト座標からワールド座標への変換
float3 lilTransformWStoOS(float3 positionWS)ワールド座標からオブジェクト座標への変換
float3 lilTransformWStoVS(float3 positionWS)ワールド座標からビュー座標への変換
float4 lilTransformWStoCS(float3 positionWS)ワールド座標からクリップ座標への変換
float4 lilTransformVStoCS(float3 positionVS)ビュー座標からクリップ座標への変換
float4 lilTransformCStoSS(float4 positionCS)クリップ座標から画面座標への変換
float4 lilTransformCStoSSFrag(float4 positionCS)クリップ座標から画面座標への変換(Fragmentシェーダー用)
float3 lilToAbsolutePositionWS(float3 positionRWS)カメラからの相対座標から絶対座標への変換(HDRP用)
float3 lilTransformDirOStoWS(float3 directionOS, bool doNormalize)ベクトルのオブジェクト空間からワールド空間への変換
float3 lilTransformDirWStoOS(float3 directionWS, bool doNormalize)ベクトルのワールド空間からオブジェクト空間への変換
float3 lilTransformNormalOStoWS(float3 normalOS, bool doNormalize)法線のオブジェクト空間からワールド空間への変換
float3 lilViewDirection(float3 positionWS)normalizeされていないView Directionの取得
float3 lilHeadDirection(float3 positionWS)normalizeされていないView Directionの取得(VRでは2つの目の間の座標を元に計算し視差を無効化)
float2 lilCStoGrabUV(float4 positionCS)クリップ座標からGrabPass用UVを取得

座標のトランスフォーム (LIL_VERTEX_POSITION_INPUTS)

名前説明
LIL_VERTEX_POSITION_INPUTS(float4 positionOS, out vertexInput)座標のトランスフォーム
LIL_RE_VERTEX_POSITION_INPUTS(vertexInput)ワールド座標を変更した場合にトランスフォームを再計算
vertexInput.positionWSワールド座標
vertexInput.positionVSビュー座標
vertexInput.positionCSクリップ座標 (SV_POSITION)
vertexInput.positionSS画面座標

ベクターのトランスフォーム (LIL_VERTEX_NORMAL_TANGENT_INPUTS)

名前説明
LIL_VERTEX_NORMAL_TANGENT_INPUTS(float3 normalOS, float4 tangentOS, out vertexNormalInput)ベクターのトランスフォーム
vertexNormalInput.tangentWSワールド空間のtangent
vertexNormalInput.bitangentWSワールド空間のbitangent
vertexNormalInput.normalWSワールド空間のnormal

その他

名前説明
float2 lilCalcUV(float2 uv, float4 tex_ST, float4 tex_ScrollRotate)UVの計算
float3 lilBlendColor(float3 dstCol, float3 srcCol, float srcA, uint blendMode)ブレンドモードによる色の合成 (0: 通常 / 1: 加算 / 2: スクリーン / 3: 乗算)
float3 lilUnpackNormalScale(float4 normalTex, float scale)ノーマルマップの展開
float lilTooning()入力値をトゥーン化

ピクセルシェーダー

lilFragDataという共通の構造体を用いて変数を管理しています。構造体の中身は以下の通りです。

名前説明
float4 col最終的に出力される色
float3 albedoマテリアルそのものの色(メインカラー)
float3 emissionColor発光の色
float3 lightColorライトの色
float3 indLightColor環境光の色(影色に利用)
float3 addLightColor頂点ライトの色
float attenuationライトの減衰
float3 invLightingライトの色の逆(蛍光に利用)
float2 uv0TEXCOORD0
float2 uv1TEXCOORD1
float2 uv2TEXCOORD2
float2 uv3TEXCOORD3
float2 uvMainメインカラーの計算済みUV
float2 uvMatMatCapのUV
float2 uvRimリムライトのUV
float2 uvPanoramaパノラマUV
float2 uvScn画面座標のUV
bool isRightHandTangentのwが正の値でtrue、負の値でfalse
float3 positionOS頂点のオブジェクト座標
float3 positionWS頂点のワールド座標
float4 positionCS頂点のクリップ座標
float4 positionSS頂点の画面座標
float depth深度
float3x3 TBNTangent、Bitangent、Normalの行列
float3 TTangent
float3 BBitangent
float3 NNormal
float3 VView Direction
float3 LLight Direction
float3 origN元のNormal
float3 origL元のLight Direction
float3 headVVR用に視差を無効化したView Direction
float3 reflectionN反射用Normal
float3 matcapNMatCap用Normal
float3 matcap2ndNMatCap2nd用Normal
float facingCull Offのときに裏面かどうか
float vlVdotL
float hlHdotL
float lnLdotN
float nvNdotV
float nvabsabs(NdotV)
float4 triMasklilToonLite用マスク
float3 parallaxViewDirection視差マップ用
float2 parallaxOffset視差マップ用オフセット量
float anisotropy異方性反射の強さ
float smoothnessSmoothness
float roughnessRoughness
float perceptualRoughnessRoughnessの2乗
float shadowmix影の強さ
float audioLinkValueAudioLinkの値
uint renderingLayersURP、HDRP用
uint featureFlagsHDRP用
uint2 tileIndexHDRP用

Released under the MIT License.