summaryrefslogtreecommitdiff
path: root/shader.hlsl
blob: 00bed12152207afe6cd5df4d0f3fb2c2dd1cd962 (plain)
struct VertexInput {
    float2 position : LOC0;
    float2 curve_uv : LOC1;
    float2 color_uv : LOC2;
    float4 color1_ : LOC3;
    float4 color2_ : LOC4;
    float4 color3_ : LOC5;
    float4 color4_ : LOC6;
    float2 normal_uv : LOC7;
    float3 normal1_ : LOC8;
    float3 normal2_ : LOC9;
    float3 normal3_ : LOC10;
    float3 normal4_ : LOC11;
};

struct VertexOutput {
    float4 position : SV_Position;
    float2 curve_uv : LOC0;
    float2 color_uv : LOC1;
    float4 color1_ : LOC2;
    float4 color2_ : LOC3;
    float4 color3_ : LOC4;
    float4 color4_ : LOC5;
    float2 normal_uv : LOC6;
    float3 normal1_ : LOC7;
    float3 normal2_ : LOC8;
    float3 normal3_ : LOC9;
    float3 normal4_ : LOC10;
};

static const float SQRT_2_ = 0.70710677;

struct VertexOutput_vs_main {
    float2 curve_uv : LOC0;
    float2 color_uv : LOC1;
    float4 color1_ : LOC2;
    float4 color2_ : LOC3;
    float4 color3_ : LOC4;
    float4 color4_ : LOC5;
    float2 normal_uv : LOC6;
    float3 normal1_ : LOC7;
    float3 normal2_ : LOC8;
    float3 normal3_ : LOC9;
    float3 normal4_ : LOC10;
    float4 position : SV_Position;
};

struct FragmentInput_fs_main {
    float2 curve_uv_1 : LOC0;
    float2 color_uv_1 : LOC1;
    float4 color1_1 : LOC2;
    float4 color2_1 : LOC3;
    float4 color3_1 : LOC4;
    float4 color4_1 : LOC5;
    float2 normal_uv_1 : LOC6;
    float3 normal1_1 : LOC7;
    float3 normal2_1 : LOC8;
    float3 normal3_1 : LOC9;
    float3 normal4_1 : LOC10;
    float4 position_1 : SV_Position;
};

float square(float in_)
{
    return (in_ * in_);
}

float cube(float in_1)
{
    return ((in_1 * in_1) * in_1);
}

float3 lerp_(float3 a, float3 b, float t)
{
    return (((b - a) * t) + a);
}

float3 oklab_to_linear_srgb(float3 color)
{
    const float _e10 = cube(((color.x + (0.39633778 * color.y)) + (0.21580376 * color.z)));
    const float _e20 = cube(((color.x - (0.105561346 * color.y)) - (0.06385417 * color.z)));
    const float _e30 = cube(((color.x - (0.08948418 * color.y)) - (1.2914855 * color.z)));
    return float3((((4.0767417 * _e10) - (3.3077116 * _e20)) + (0.23096994 * _e30)), (((-1.268438 * _e10) + (2.6097574 * _e20)) - (0.34131938 * _e30)), (((-0.0041960864 * _e10) - (0.7034186 * _e20)) + (1.7076147 * _e30)));
}

VertexOutput_vs_main vs_main(VertexInput vertex)
{
    VertexOutput out_ = (VertexOutput)0;

    out_.position = float4(vertex.position, 1.0, 1.0);
    out_.curve_uv = vertex.curve_uv;
    out_.color_uv = vertex.color_uv;
    out_.color1_ = vertex.color1_;
    out_.color2_ = vertex.color2_;
    out_.color3_ = vertex.color3_;
    out_.color4_ = vertex.color4_;
    out_.normal_uv = vertex.normal_uv;
    out_.normal1_ = vertex.normal1_;
    out_.normal2_ = vertex.normal2_;
    out_.normal3_ = vertex.normal3_;
    out_.normal4_ = vertex.normal4_;
    VertexOutput _e29 = out_;
    const VertexOutput vertexoutput = _e29;
    const VertexOutput_vs_main vertexoutput_1 = { vertexoutput.curve_uv, vertexoutput.color_uv, vertexoutput.color1_, vertexoutput.color2_, vertexoutput.color3_, vertexoutput.color4_, vertexoutput.normal_uv, vertexoutput.normal1_, vertexoutput.normal2_, vertexoutput.normal3_, vertexoutput.normal4_, vertexoutput.position };
    return vertexoutput_1;
}

float4 fs_main(FragmentInput_fs_main fragmentinput_fs_main) : SV_Target0
{
    VertexOutput vertex_1 = { fragmentinput_fs_main.position_1, fragmentinput_fs_main.curve_uv_1, fragmentinput_fs_main.color_uv_1, fragmentinput_fs_main.color1_1, fragmentinput_fs_main.color2_1, fragmentinput_fs_main.color3_1, fragmentinput_fs_main.color4_1, fragmentinput_fs_main.normal_uv_1, fragmentinput_fs_main.normal1_1, fragmentinput_fs_main.normal2_1, fragmentinput_fs_main.normal3_1, fragmentinput_fs_main.normal4_1 };
    float radius = length(vertex_1.curve_uv);
    float _e3 = ddx_fine(radius);
    float _e4 = ddy_fine(radius);
    float afwidth = (length(float2(_e3, _e4)) * SQRT_2_);
    float in_circle = (1.0 - smoothstep((1.0 - afwidth), (1.0 + afwidth), radius));
    const float3 _e22 = lerp_(vertex_1.color1_.xyz, vertex_1.color2_.xyz, length(vertex_1.color_uv));
    const float3 _e23 = oklab_to_linear_srgb(_e22);
    const float3 _e32 = lerp_(vertex_1.color3_.xyz, vertex_1.color4_.xyz, (1.0 - length(vertex_1.color_uv)));
    const float3 _e33 = oklab_to_linear_srgb(_e32);
    const float3 _e34 = lerp_(_e33, _e23, in_circle);
    const float3 _e39 = lerp_(vertex_1.normal1_, vertex_1.normal2_, length(vertex_1.normal_uv));
    const float3 _e46 = lerp_(vertex_1.normal3_, vertex_1.normal4_, (1.0 - length(vertex_1.normal_uv)));
    const float3 _e47 = lerp_(_e46, _e39, in_circle);
    return float4(_e34, in_circle);
}