View source
class LineShader
package h3d.shader
extends Shader
@:directlyUsed@:src({ @global var camera:{ var view : Mat4; var proj : Mat4; var viewProj : Mat4; @const var reverseDepth : Bool; var zNear : Float; var zFar : Float}; @global var global:{ var pixelSize : Vec2; @perObject var modelView : Mat4}; @input var input:{ var position : Vec3; var normal : Vec3; var uv : Vec2}; var output:{ var position : Vec4}; var transformedNormal:Vec3; var transformedPosition:Vec3; var projectedPosition:Vec4; @param var lengthScale:Float; @param var width:Float; var pdir:Vec4; function __init__() { { var dir = input.normal * global.modelView.mat3(); pdir = vec4(dir * mat3(camera.view), 1) * camera.proj; pdir.xy *= 1 / sqrt(pdir.x * pdir.x + pdir.y * pdir.y); transformedPosition += dir * input.uv.x * lengthScale; transformedNormal = dir.normalize(); }; }; function linearize(d:Float):Float { var n = camera.zNear; var f = camera.zFar; return (2 * n * f) / (f + n - (2 * d - 1) * (f - n) * (camera.reverseDepth ? -1.0 : 1.0)); }; function vertex() { projectedPosition.xy += (pdir.yx * vec2(1, -1)) * (input.uv.y - 0.5) * linearize(projectedPosition.z / projectedPosition.w) * global.pixelSize * width; }; })@:build(hxsl.Macros.buildShader())@:autoBuild(hxsl.Macros.buildShader())Constructor
Variables
Methods
Inherited Variables
Inherited Methods
Defined by Shader
setPriority(v:Int):Void
Shader priority should only be changed before the shader is added to a material.
