@:directlyUsed@:src({
var albedo:Vec3;
var depth:Float;
var normal:Vec3;
var metalness:Float;
var roughness:Float;
var occlusion:Float;
var emissive:Float;
@param var shadowMap:Channel;
@const var smode:Int;
function getColor(x:Float, y:Float):Vec3 {
var color:Vec3;
if (y < 3) {
if (x < 1) color = albedo.sqrt() else if (x < 2) color = packNormal(normal).rgb else if (x < 3) color = roughness.xxx else color = metalness.xxx;
} else {
if (x < 1) color = emissive.xxx else if (x < 2) color = depth.xxx else if (x < 3) color = occlusion.xxx else color = shadowMap.get(vec2(x, y) - 3).xxx;
};
return color;
};
function fragment() {
var color:Vec3;
var x = input.uv.x * 4;
var y = input.uv.y * 4;
if (smode == 0) color = getColor(x, y) else color = getColor((smode - 1) % 4 + input.uv.x, int((smode - 1) / 4) * 3 + input.uv.y);
pixelColor = vec4(color, 1.);
};
})@:build(hxsl.Macros.buildShader())@:autoBuild(hxsl.Macros.buildShader())