環境
Unity2021.3.4f1
概要
視差遮蔽マッピング(ParallaxOcclusionMapping)です。
Depthを書き換えないシンプルなものです。
視線方向からRayを進めてUVをずらす為、隣のピクセルとUVが連続していません。
そのため先にddx/ddyで傾きを取得しておき、tex2Dgradでテクスチャを参照します。
ここに全コード記載しています。
float2 dx, dy;
dx = ddx(i.texCoord);
dy = ddy(i.texCoord);
while (stepIndex < numSteps)
{
texCurrentOffset -= texOffsetPerStep;
prevHeight = currHeight;
currHeight = tex2Dgrad(_HeightTex, texCurrentOffset, dx, dy).r;
currentBound -= stepSize;
stepIndex = (currHeight > currentBound) ? numSteps : stepIndex + 1;
}
参考