ユーティリティ
レンダリングパイプラインや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 uv0 | TEXCOORD0 |
| float2 uv1 | TEXCOORD1 |
| float2 uv2 | TEXCOORD2 |
| float2 uv3 | TEXCOORD3 |
| float2 uvMain | メインカラーの計算済みUV |
| float2 uvMat | MatCapのUV |
| float2 uvRim | リムライトのUV |
| float2 uvPanorama | パノラマUV |
| float2 uvScn | 画面座標のUV |
| bool isRightHand | Tangentのwが正の値でtrue、負の値でfalse |
| float3 positionOS | 頂点のオブジェクト座標 |
| float3 positionWS | 頂点のワールド座標 |
| float4 positionCS | 頂点のクリップ座標 |
| float4 positionSS | 頂点の画面座標 |
| float depth | 深度 |
| float3x3 TBN | Tangent、Bitangent、Normalの行列 |
| float3 T | Tangent |
| float3 B | Bitangent |
| float3 N | Normal |
| float3 V | View Direction |
| float3 L | Light Direction |
| float3 origN | 元のNormal |
| float3 origL | 元のLight Direction |
| float3 headV | VR用に視差を無効化したView Direction |
| float3 reflectionN | 反射用Normal |
| float3 matcapN | MatCap用Normal |
| float3 matcap2ndN | MatCap2nd用Normal |
| float facing | Cull Offのときに裏面かどうか |
| float vl | VdotL |
| float hl | HdotL |
| float ln | LdotN |
| float nv | NdotV |
| float nvabs | abs(NdotV) |
| float4 triMask | lilToonLite用マスク |
| float3 parallaxViewDirection | 視差マップ用 |
| float2 parallaxOffset | 視差マップ用オフセット量 |
| float anisotropy | 異方性反射の強さ |
| float smoothness | Smoothness |
| float roughness | Roughness |
| float perceptualRoughness | Roughnessの2乗 |
| float shadowmix | 影の強さ |
| float audioLinkValue | AudioLinkの値 |
| uint renderingLayers | URP、HDRP用 |
| uint featureFlags | HDRP用 |
| uint2 tileIndex | HDRP用 |