浏览代码

Parallax: fix shader

lviguier 11 月之前
父节点
当前提交
26cc07d61b
共有 1 个文件被更改,包括 4 次插入2 次删除
  1. 4 2
      h3d/shader/Parallax.hx

+ 4 - 2
h3d/shader/Parallax.hx

@@ -33,13 +33,15 @@ class Parallax extends hxsl.Shader {
 			if( maxLayers == 0 )
 				calculatedUV += viewNS.xy * heightMap.get(calculatedUV) * amount;
 			else {
-				var numLayers = mix(float(maxLayers), float(minLayers), abs(viewNS.z));
+				var numLayers = int(mix(float(maxLayers), float(minLayers), abs(viewNS.z)));
 				var layerDepth = 1 / numLayers;
 				var curLayerDepth = 0.;
 				var delta = (viewNS.xy / viewNS.z) * amount / numLayers;
 				var curUV = calculatedUV;
 				var curDepth = heightMap.getLod(curUV,0.);
-			    while( curLayerDepth < curDepth ) {
+			    for (i in 0...numLayers) {
+					if (curLayerDepth < curDepth)
+						break;
 			        curUV += delta;
 			        curDepth = heightMap.getLod(curUV,0.);
 			        curLayerDepth += layerDepth;