123456789101112131415161718192021222324252627282930313233343536 |
- package hrt.shgraph.nodes;
- using hxsl.Ast;
- @name("Parallax")
- @description("Parallaxed uv offset")
- @group("UV")
- @width(100)
- class Parallax extends ShaderNodeHxsl {
- static var SRC = {
- @sginput("camera.position") var cameraPosition : Vec3;
- @sginput(1.0) var range : Float;
- @sgoutput var output : Vec2;
-
- @global var global : {
- @perObject var modelView : Mat4;
- };
- @input var input : {
- var tangent : Vec3;
- };
- var transformedPosition : Vec3;
- var transformedNormal : Vec3;
- function fragment() {
- var viewWS = (cameraPosition - transformedPosition).normalize();
- var tanX = input.tangent * global.modelView.mat3();
- var tanY = normalize(transformedNormal.cross(tanX));
- var viewNS = vec3(viewWS.dot(tanX), viewWS.dot(tanY), viewWS.dot(transformedNormal)).normalize();
- output = -viewNS.xy * range;
- }
- };
- }
|