2
0
ShiroSmith 4 жил өмнө
parent
commit
fd7d2fa0e3

+ 8 - 3
hrt/prefab/pbr/Anisotropy.hx

@@ -25,6 +25,7 @@ class Anisotropy extends Prefab {
 	public var intensityFactor = 1.0;
 	public var noiseIntensityPath : String = null;
 	public var noiseDirectionPath : String = null;
+	public var rotationOffset : Float = 0.0;
 
 	public function new(?parent) {
 		super(parent);
@@ -41,6 +42,7 @@ class Anisotropy extends Prefab {
 		if( obj.intensityFactor != null ) intensityFactor = obj.intensityFactor;
 		if( obj.noiseIntensityPath != null ) noiseIntensityPath = obj.noiseIntensityPath;
 		if( obj.noiseDirectionPath != null ) noiseDirectionPath = obj.noiseDirectionPath;
+		if( obj.rotationOffset != null ) rotationOffset = obj.rotationOffset;
 	}
 
 	override function save() {
@@ -53,6 +55,7 @@ class Anisotropy extends Prefab {
 		obj.intensityFactor = intensityFactor;
 		obj.noiseIntensityPath = noiseIntensityPath;
 		obj.noiseDirectionPath = noiseDirectionPath;
+		obj.rotationOffset = rotationOffset;
 		return obj;
 	}
 
@@ -124,6 +127,7 @@ class Anisotropy extends Prefab {
 				nt.noiseIntensityTexture = noiseIntensityPath != null ? ctx.loadTexture(noiseIntensityPath) : null;
 				nt.noiseDirectionTexture = noiseDirectionPath != null ? ctx.loadTexture(noiseDirectionPath) : null;
 				nt.intensityFactor = intensityFactor;
+				nt.rotationOffset = hxd.Math.degToRad(rotationOffset);
 			}
 		}
 	}
@@ -139,16 +143,17 @@ class Anisotropy extends Prefab {
 		super.edit(ctx);
 
 		var flatParams = 	'<dt>Intensity</dt><dd><input type="range" min="0" max="1" field="intensity"/></dd>
-							<dt>Direction</dt><dd><input type="range" min="0" max="180" field="direction"/></dd>';
+							<dt>Direction</dt><dd><input type="range" min="0" max="360" field="direction"/></dd>';
 
 		var textureParams = '<dt>Factor</dt><dd><input type="range" min="0" max="1" field="intensityFactor"/></dd>
+							<dt>Rotation Offset</dt><dd><input type="range" min="0" max="360" field="rotationOffset"/></dd>
 							<dt>Intensity</dt><dd><input type="texturepath" field="noiseIntensityPath"/>
 							<dt>Direction</dt><dd><input type="texturepath" field="noiseDirectionPath"/>';
 
 		var frequencyParams =	'<dt>Intensity</dt><dd><input type="range" min="0" max="1" field="intensity"/></dd>
 								<dt>Noise Intensity</dt><dd><input type="range" min="0" max="1" field="noiseIntensity"/></dd>
-								<dt>Noise Frequency</dt><dd><input type="range" min="0" max="180" field="noiseFrequency"/></dd>
-								<dt>Direction</dt><dd><input type="range" min="0" max="180" field="direction"/></dd>';
+								<dt>Noise Frequency</dt><dd><input type="range" min="0" max="100" field="noiseFrequency"/></dd>
+								<dt>Direction</dt><dd><input type="range" min="0" max="360" field="direction"/></dd>';
 
 		var params = switch mode {
 			case Flat: flatParams;

+ 2 - 1
hrt/shader/AnisotropicFoward.hx

@@ -45,6 +45,7 @@ class NoiseTexture extends hxsl.Shader {
 	static var SRC = {
 
 		@param var intensityFactor : Float;
+		@param var rotationOffset : Float;
 		@param var noiseIntensityTexture : Sampler2D;
 		@param var noiseDirectionTexture : Sampler2D;
 		var anisotropy : Float;
@@ -53,7 +54,7 @@ class NoiseTexture extends hxsl.Shader {
 
 		function fragment()  {
 			anisotropy = noiseIntensityTexture.get(calculatedUV % 1.0).r * intensityFactor;
-			var angle = noiseDirectionTexture.get(calculatedUV % 1.0).r * 2 * PI;
+			var angle = noiseDirectionTexture.get(calculatedUV % 1.0).r * 2 * PI + rotationOffset;
 			direction = vec3(cos(angle), sin(angle), 0.0);
 		}
 	}