导航菜单

页面标题

页面副标题

Kreate v1.5.0 - Heat.java 源代码

正在查看: Kreate v1.5.0 应用的 Heat.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.mikepenz.hypnoticcanvas.shaders;

import com.mikepenz.hypnoticcanvas.RuntimeEffect;
import com.mikepenz.hypnoticcanvas.shaders.Shader;
import kotlin.Metadata;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;

@Metadata(d1 = {"\u0000(\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0007\n\u0002\b\u0003\n\u0002\u0010\u000e\n\u0002\b\u0012\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0004\b\u0007\u0018\u00002\u00020\u0001B\u0011\u0012\b\b\u0002\u0010\u0002\u001a\u00020\u0003¢\u0006\u0004\b\u0004\u0010\u0005J(\u0010\u0019\u001a\u00020\u001a2\u0006\u0010\u001b\u001a\u00020\u001c2\u0006\u0010\u001d\u001a\u00020\u00032\u0006\u0010\u001e\u001a\u00020\u00032\u0006\u0010\u001f\u001a\u00020\u0003H\u0016R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\u0006\u001a\u00020\u00078VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\b\u0010\tR\u0014\u0010\n\u001a\u00020\u00078VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\u000b\u0010\tR\u0014\u0010\f\u001a\u00020\u00078VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\r\u0010\tR\u0014\u0010\u000e\u001a\u00020\u00078VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\u000f\u0010\tR\u0014\u0010\u0010\u001a\u00020\u00078VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\u0011\u0010\tR\u0014\u0010\u0012\u001a\u00020\u00078VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\u0013\u0010\tR\u0014\u0010\u0014\u001a\u00020\u00038VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\u0015\u0010\u0016R\u0014\u0010\u0017\u001a\u00020\u0007X\u0096D¢\u0006\b\n\u0000\u001a\u0004\b\u0018\u0010\t¨\u0006 "}, d2 = {"Lcom/mikepenz/hypnoticcanvas/shaders/Heat;", "Lcom/mikepenz/hypnoticcanvas/shaders/Shader;", "filmGrainIntensity", "", "<init>", "(F)V", "name", "", "getName", "()Ljava/lang/String;", "authorName", "getAuthorName", "authorUrl", "getAuthorUrl", "credit", "getCredit", "license", "getLicense", "licenseUrl", "getLicenseUrl", "speedModifier", "getSpeedModifier", "()F", "sksl", "getSksl", "applyUniforms", "", "runtimeEffect", "Lcom/mikepenz/hypnoticcanvas/RuntimeEffect;", "time", "width", "height", "hypnoticcanvas-shaders_release"}, k = 1, mv = {2, 0, 0}, xi = 48)
public final class Heat implements Shader {
    public static final int $stable = 0;
    private final float filmGrainIntensity;
    private final String sksl;

    public Heat() {
        this(0.0f, 1, null);
    }

    @Override
    public float getSpeedModifier() {
        return 0.1f;
    }

    public Heat(float f) {
        this.filmGrainIntensity = f;
        this.sksl = "\nuniform float filmGrainIntensity;\nuniform float uTime;\nuniform vec3 uResolution;\n\n// Inspired by https://www.shadertoy.com/view/wdyczG\n// Licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License:\n// https://creativecommons.org/licenses/by-nc-sa/3.0/deed.en\nmat2 Rot(float a) {\n    float s = sin(a);\n    float c = cos(a);\n    return mat2(c, -s, s, c);\n}\n\nvec2 hash(vec2 p) {\n    p = vec2(dot(p, vec2(2127.1, 81.17)), dot(p, vec2(1269.5, 283.37)));\n    return fract(sin(p)*43758.5453);\n}\n\nfloat noise(in vec2 p) {\n    vec2 i = floor(p);\n    vec2 f = fract(p);\n\n    vec2 u = f*f*(3.0-2.0*f);\n\n    float n = mix(mix(dot(-1.0+2.0*hash(i + vec2(0.0, 0.0)), f - vec2(0.0, 0.0)),\n    dot(-1.0+2.0*hash(i + vec2(1.0, 0.0)), f - vec2(1.0, 0.0)), u.x),\n    mix(dot(-1.0+2.0*hash(i + vec2(0.0, 1.0)), f - vec2(0.0, 1.0)),\n    dot(-1.0+2.0*hash(i + vec2(1.0, 1.0)), f - vec2(1.0, 1.0)), u.x), u.y);\n    return 0.5 + 0.5*n;\n}\n\nfloat filmGrainNoise(in vec2 uv) {\n    return length(hash(vec2(uv.x, uv.y)));\n}\n\nvec4 main( vec2 fragCoord ) {\n    vec2 uv = fragCoord / uResolution.xy;\n    float aspectRatio = uResolution.x / uResolution.y;\n    \n    // Transformed uv\n    vec2 tuv = uv - .5;\n\n    // Rotate with noise\n    float degree = noise(vec2(uTime*.05, tuv.x*tuv.y));\n\n    tuv.y *= 1./aspectRatio;\n    tuv *= Rot(radians((degree-.5)*720.+180.));\n    tuv.y *= aspectRatio;\n\n    // Wave warp with sine\n    float frequency = 5.;\n    float amplitude = 30.;\n    float speed = uTime * 2.;\n    tuv.x += sin(tuv.y*frequency+speed)/amplitude;\n    tuv.y += sin(tuv.x*frequency*1.5+speed)/(amplitude*.5);\n        \n    \n    // Light gradient colors\n    vec3 cornsilk = vec3(237, 203, 182) / vec3(255);\n    vec3 indigoDye = vec3(246, 223, 171) / vec3(255);       // Indigo Dye (#1E4872)\n    \n    vec3 dun = vec3(105, 70, 51) / vec3(255);\n    vec3 paynesGray2 = vec3(218, 80, 42) / vec3(255);     // Payne's Gray 2 (#3C576C)\n    \n    // Intermediate gradient colors\n    vec3 blueGray = vec3(64, 33, 18) / vec3(255);      // Blue Gray (#6E96B9)\n    vec3 paynesGray = vec3(44, 20, 11) / vec3(255);     // Payne's Gray (#436682)\n    \n    \n    // Interpolate between light and dark gradient\n    float cycle = sin(uTime * 0.5);\n    float t = (sign(cycle) * pow(abs(cycle), 0.6) + 1.) / 2.;\n    vec3 color1 = mix(cornsilk, indigoDye, t);\n    vec3 color2 = mix(dun, paynesGray2, t);\n    vec3 color3 = mix(blueGray, paynesGray, t);\n    vec3 color4 = mix(paynesGray, blueGray, t);\n    \n    // Blend the gradient colors and apply transformations\n    vec3 layer1 = mix(color3, color2, smoothstep(-.03, .2, (tuv * Rot(radians(-5.))).x));\n    vec3 layer2 = mix(color4, color1, smoothstep(-.02, .2, (tuv * Rot(radians(-5.))).x));\n    \n    vec3 color = mix(layer1, layer2, smoothstep(.05, -.3, tuv.y));\n    \n    // Apply brightness increase and contrast boost\n    color = color * 1.2;  // Increase brightness slightly\n    color = pow(color, vec3(1.1));  // Apply a mild contrast boost\n    \n    // Apply film grain\n    color = color - filmGrainNoise(uv) * filmGrainIntensity;\n    \n    return vec4(color, 1.0);\n}\n    ";
    }

    public Heat(float f, int i, DefaultConstructorMarker defaultConstructorMarker) {
        this((i & 1) != 0 ? 0.1f : f);
    }

    @Override
    public String getName() {
        return "heattttt";
    }

    @Override
    public String getAuthorName() {
        return "ykleij";
    }

    @Override
    public String getAuthorUrl() {
        return "https://www.shadertoy.com/user/ykleij";
    }

    @Override
    public String getCredit() {
        return "https://www.shadertoy.com/view/l3yyDd";
    }

    @Override
    public String getLicense() {
        return "Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License";
    }

    @Override
    public String getLicenseUrl() {
        return "https://www.shadertoy.com/terms";
    }

    @Override
    public String getSksl() {
        return this.sksl;
    }

    @Override
    public void applyUniforms(RuntimeEffect runtimeEffect, float time, float width, float height) {
        Intrinsics.checkNotNullParameter(runtimeEffect, "runtimeEffect");
        Shader.DefaultImpls.applyUniforms(this, runtimeEffect, time, width, height);
        runtimeEffect.setFloatUniform("filmGrainIntensity", this.filmGrainIntensity);
    }
}