Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Стекло

Начинающий
Начинающий
Статус
Онлайн
Регистрация
30 Июн 2024
Сообщения
777
Реакции
14
делаю чисто для себя. Я уже хуй знает что мне с ним делать, не появляется там преломление(искажение к краям) шейдеры вот
Код:
Expand Collapse Copy
#version 150

#moj_import <mre:common.glsl>

in vec2 FragCoord;
in vec2 TexCoord;
in vec4 FragColor;

uniform sampler2D Sampler0;
uniform vec2 Size;
uniform vec4 Radius;
uniform float Smoothness;
uniform float CornerSmoothness;
uniform float GlobalAlpha;

uniform float FresnelPower;
uniform vec3 FresnelColor;
uniform float FresnelAlpha;
uniform float BaseAlpha;
uniform bool FresnelInvert;
uniform float FresnelMix;
uniform float DistortStrength;

out vec4 OutColor;

float roundedBoxSDF(vec2 p, vec2 b, vec4 r, float smoothness) {
    r.xy = (p.x > 0.0) ? r.xy : r.zw;
    r.x = (p.y > 0.0) ? r.x : r.y;
    vec2 q = abs(p) - b + r.x;
    vec2 q_clamped = max(q, 0.0);
    float len = pow(pow(q_clamped.x, smoothness) + pow(q_clamped.y, smoothness), 1.0/smoothness);
    return min(max(q.x, q.y), 0.0) + len - r.x;
}

void main() {
    vec2 center = Size * 0.5;
    vec2 box_half_size = center - 1.0;
    vec2 pos = (FragCoord * Size) - center;

    float distance = roundedBoxSDF(-pos, box_half_size, Radius, CornerSmoothness);
    float alpha = 1.0 - smoothstep(1.0 - Smoothness, 1.0, distance);

    float distToEdge = abs(roundedBoxSDF(pos, box_half_size, Radius, CornerSmoothness));

    float max_dist_norm = min(box_half_size.x, box_half_size.y);
    float edge_gradient = 1.0 - clamp(distToEdge / max_dist_norm, 0.0, 1.0);

    float fresnel;
    float base = FresnelInvert ? edge_gradient : (1.0 - edge_gradient);

    if (FresnelPower > 20.0) {
        fresnel = exp(FresnelPower * log(clamp(base, 0.001, 1.0)));
    } else {
        fresnel = pow(base, FresnelPower);
    }
    fresnel = clamp(fresnel, 0.0, 1.0);

    vec2 dir = normalize(pos);
    vec2 distortedTexCoord = TexCoord + dir * fresnel * DistortStrength;

    vec4 texColor = texture(Sampler0, distortedTexCoord) * FragColor;

    vec3 finalColor = mix(texColor.rgb, FresnelColor, fresnel * FresnelMix);
    float finalAlpha = mix(BaseAlpha, FresnelAlpha, fresnel) * alpha;

    if (finalAlpha < 0.001) {
        discard;
    }

    OutColor = vec4(finalColor, finalAlpha * GlobalAlpha);
}
Код:
Expand Collapse Copy
{
  "vertex": "mre:core/liquidglass/vertex",
  "fragment": "mre:core/liquidglass/fragment",
  "samplers": [
    {
      "name": "Sampler0"
    }
  ],
  "uniforms": [
    {
      "name": "ModelViewMat",
      "type": "matrix4x4",
      "count": 16,
      "values": [1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]
    },
    {
      "name": "ProjMat",
      "type": "matrix4x4",
      "count": 16,
      "values": [1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]
    },
    {
      "name": "Size",
      "type": "float",
      "count": 2,
      "values": [0.0, 0.0]
    },
    {
      "name": "Radius",
      "type": "float",
      "count": 4,
      "values": [0.0, 0.0, 0.0, 0.0]
    },
    {
      "name": "Smoothness",
      "type": "float",
      "count": 1,
      "values": [1.0]
    },
    {
      "name": "CornerSmoothness",
      "type": "float",
      "count": 1,
      "values": [2.0]
    },
    {
      "name": "GlobalAlpha",
      "type": "float",
      "count": 1,
      "values": [1.0]
    },
    {
      "name": "FresnelPower",
      "type": "float",
      "count": 1,
      "values": [2.0]
    },
    {
      "name": "FresnelColor",
      "type": "float",
      "count": 3,
      "values": [1.0, 1.0, 1.0]
    },
    {
      "name": "FresnelAlpha",
      "type": "float",
      "count": 1,
      "values": [0.8]
    },
    {
      "name": "BaseAlpha",
      "type": "float",
      "count": 1,
      "values": [0.2]
    },
    {
      "name": "FresnelInvert",
      "type": "int",
      "count": 1,
      "values": [0]
    },
    {
      "name": "FresnelMix",
      "type": "float",
      "count": 1,
      "values": [1.0]
    },
    {
      "name": "DistortStrength",
      "type": "float",
      "count": 1,
      "values": [0.03]
    }
  ]
}
Код:
Expand Collapse Copy
#version 150

#moj_import <mre:common.glsl>

in vec3 Position;
in vec2 UV0;
in vec4 Color;

uniform mat4 ModelViewMat;
uniform mat4 ProjMat;

out vec2 FragCoord;
out vec2 TexCoord;
out vec4 FragColor;

void main() {
    gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
    FragCoord = rvertexcoord(gl_VertexID);
    TexCoord = UV0;
    FragColor = Color;
}
Код:
Expand Collapse Copy
package fun.rich.utils.display.shape.implement;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.gl.*;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.BufferRenderer;
import net.minecraft.client.render.VertexFormat;
import net.minecraft.client.render.VertexFormats;
import net.minecraft.util.Identifier;
import org.joml.Matrix4f;
import org.joml.Vector2f;
import org.joml.Vector3f;
import org.joml.Vector4f;
import org.lwjgl.opengl.GL13;
import fun.rich.utils.display.shape.Shape;
import fun.rich.utils.display.shape.ShapeProperties;
import fun.rich.utils.display.interfaces.QuickImports;
import fun.rich.utils.display.color.ColorAssist;

public class LiquidGlass implements Shape, QuickImports {
    private final ShaderProgramKey SHADER_KEY = new ShaderProgramKey(Identifier.of("minecraft", "core/blur"), VertexFormats.POSITION, Defines.EMPTY);
    public Framebuffer input;
    public Vector2f resolution = new Vector2f();

    private float smoothness = 1.0f;
    private float cornerSmoothness = 2.0f;
    private float globalAlpha = 1.0f;
    private float fresnelPower = 2.0f;
    private float fresnelAlpha = 0.8f;
    private float baseAlpha = 0.2f;
    private float distortStrength = 0.05f;
    private boolean fresnelInvert = false;
    private float fresnelMix = 1.0f;
    private float fresnelColorR = 1.0f;
    private float fresnelColorG = 1.0f;
    private float fresnelColorB = 1.0f;

    @Override
    public void render(ShapeProperties shape) {
        RenderSystem.enableBlend();
        RenderSystem.defaultBlendFunc();
        RenderSystem.enableDepthTest();
        RenderSystem.enableCull();

        float scale = (float) mc.getWindow().getScaleFactor();
        float alpha = RenderSystem.getShaderColor()[3];
        Matrix4f matrix4f = shape.getMatrix().peek().getPositionMatrix();
        Vector3f pos = matrix4f.transformPosition(shape.getX(), shape.getY(), 0, new Vector3f()).mul(scale);
        Vector3f size = matrix4f.getScale(new Vector3f()).mul(scale);
        Vector4f round = shape.getRound().mul(size.y);
        float quality = shape.getQuality();
        float softness = shape.getSoftness();
        float thickness = shape.getThickness();
        float width = shape.getWidth() * size.x;
        float height = shape.getHeight() * size.y;

        BufferBuilder buffer = tessellator.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION);
        drawEngine.quad(matrix4f, buffer, shape.getX() - softness / 2, shape.getY() - softness / 2, shape.getWidth() + softness, shape.getHeight() + softness);

        GlStateManager._activeTexture(GL13.GL_TEXTURE0);
        if (input != null) RenderSystem.bindTexture(input.getColorAttachment());
        ShaderProgram shader = RenderSystem.setShader(SHADER_KEY);
        shader.getUniformOrDefault("size").set(width, height);
        shader.getUniformOrDefault("location").set(pos.x, window.getHeight() - height - pos.y);
        shader.getUniformOrDefault("radius").set(round);
        shader.getUniformOrDefault("softness").set(softness);
        shader.getUniformOrDefault("thickness").set(thickness);
        shader.getUniformOrDefault("Quality").set(quality);
        shader.getUniformOrDefault("color1").set(ColorAssist.redf(shape.getColor().x), ColorAssist.greenf(shape.getColor().x), ColorAssist.bluef(shape.getColor().x), ColorAssist.alphaf(ColorAssist.multAlpha(shape.getColor().x, alpha)));
        shader.getUniformOrDefault("color2").set(ColorAssist.redf(shape.getColor().y), ColorAssist.greenf(shape.getColor().y), ColorAssist.bluef(shape.getColor().y), ColorAssist.alphaf(ColorAssist.multAlpha(shape.getColor().y, alpha)));
        shader.getUniformOrDefault("color3").set(ColorAssist.redf(shape.getColor().z), ColorAssist.greenf(shape.getColor().z), ColorAssist.bluef(shape.getColor().z), ColorAssist.alphaf(ColorAssist.multAlpha(shape.getColor().z, alpha)));
        shader.getUniformOrDefault("color4").set(ColorAssist.redf(shape.getColor().w), ColorAssist.greenf(shape.getColor().w), ColorAssist.bluef(shape.getColor().w), ColorAssist.alphaf(ColorAssist.multAlpha(shape.getColor().w, alpha)));
        shader.getUniformOrDefault("outlineColor").set(ColorAssist.redf(shape.getOutlineColor()), ColorAssist.greenf(shape.getOutlineColor()), ColorAssist.bluef(shape.getOutlineColor()), ColorAssist.alphaf(ColorAssist.multAlpha(shape.getOutlineColor(), alpha)));
        shader.getUniformOrDefault("InputResolution").set(resolution.x, resolution.y);

        BufferRenderer.drawWithGlobalProgram(buffer.end());
        RenderSystem.disableBlend();
    }

    public void setup() {
        Framebuffer buffer = mc.getFramebuffer();
        if (input == null) {
            input = new SimpleFramebuffer(mc.getWindow().getScaledWidth(), mc.getWindow().getScaledHeight(), false);
        }
        input.beginWrite(false);
        buffer.draw(input.textureWidth, input.textureHeight);
        buffer.beginWrite(false);
        if (input != null && (input.textureWidth != mc.getWindow().getFramebufferWidth() || input.textureHeight != mc.getWindow().getFramebufferHeight())) {
            input.resize(mc.getWindow().getFramebufferWidth(), mc.getWindow().getFramebufferHeight());
        }
        resolution.set((float) buffer.textureWidth, (float) buffer.textureHeight);
    }

    public LiquidGlass setSmoothness(float smoothness) {
        this.smoothness = smoothness;
        return this;
    }

    public LiquidGlass setCornerSmoothness(float cornerSmoothness) {
        this.cornerSmoothness = cornerSmoothness;
        return this;
    }

    public LiquidGlass setGlobalAlpha(float globalAlpha) {
        this.globalAlpha = globalAlpha;
        return this;
    }

    public LiquidGlass setFresnelPower(float fresnelPower) {
        this.fresnelPower = fresnelPower;
        return this;
    }

    public LiquidGlass setFresnelAlpha(float fresnelAlpha) {
        this.fresnelAlpha = fresnelAlpha;
        return this;
    }

    public LiquidGlass setBaseAlpha(float baseAlpha) {
        this.baseAlpha = baseAlpha;
        return this;
    }

    public LiquidGlass setDistortStrength(float distortStrength) {
        this.distortStrength = distortStrength;
        return this;
    }

    public LiquidGlass setFresnelInvert(boolean fresnelInvert) {
        this.fresnelInvert = fresnelInvert;
        return this;
    }

    public LiquidGlass setFresnelMix(float fresnelMix) {
        this.fresnelMix = fresnelMix;
        return this;
    }

    public LiquidGlass setFresnelColor(float r, float g, float b) {
        this.fresnelColorR = r;
        this.fresnelColorG = g;
        this.fresnelColorB = b;
        return this;
    }
}
вроде всё
1778172026008.png
 
делаю чисто для себя. Я уже хуй знает что мне с ним делать, не появляется там преломление(искажение к краям) шейдеры вот
Код:
Expand Collapse Copy
#version 150

#moj_import <mre:common.glsl>

in vec2 FragCoord;
in vec2 TexCoord;
in vec4 FragColor;

uniform sampler2D Sampler0;
uniform vec2 Size;
uniform vec4 Radius;
uniform float Smoothness;
uniform float CornerSmoothness;
uniform float GlobalAlpha;

uniform float FresnelPower;
uniform vec3 FresnelColor;
uniform float FresnelAlpha;
uniform float BaseAlpha;
uniform bool FresnelInvert;
uniform float FresnelMix;
uniform float DistortStrength;

out vec4 OutColor;

float roundedBoxSDF(vec2 p, vec2 b, vec4 r, float smoothness) {
    r.xy = (p.x > 0.0) ? r.xy : r.zw;
    r.x = (p.y > 0.0) ? r.x : r.y;
    vec2 q = abs(p) - b + r.x;
    vec2 q_clamped = max(q, 0.0);
    float len = pow(pow(q_clamped.x, smoothness) + pow(q_clamped.y, smoothness), 1.0/smoothness);
    return min(max(q.x, q.y), 0.0) + len - r.x;
}

void main() {
    vec2 center = Size * 0.5;
    vec2 box_half_size = center - 1.0;
    vec2 pos = (FragCoord * Size) - center;

    float distance = roundedBoxSDF(-pos, box_half_size, Radius, CornerSmoothness);
    float alpha = 1.0 - smoothstep(1.0 - Smoothness, 1.0, distance);

    float distToEdge = abs(roundedBoxSDF(pos, box_half_size, Radius, CornerSmoothness));

    float max_dist_norm = min(box_half_size.x, box_half_size.y);
    float edge_gradient = 1.0 - clamp(distToEdge / max_dist_norm, 0.0, 1.0);

    float fresnel;
    float base = FresnelInvert ? edge_gradient : (1.0 - edge_gradient);

    if (FresnelPower > 20.0) {
        fresnel = exp(FresnelPower * log(clamp(base, 0.001, 1.0)));
    } else {
        fresnel = pow(base, FresnelPower);
    }
    fresnel = clamp(fresnel, 0.0, 1.0);

    vec2 dir = normalize(pos);
    vec2 distortedTexCoord = TexCoord + dir * fresnel * DistortStrength;

    vec4 texColor = texture(Sampler0, distortedTexCoord) * FragColor;

    vec3 finalColor = mix(texColor.rgb, FresnelColor, fresnel * FresnelMix);
    float finalAlpha = mix(BaseAlpha, FresnelAlpha, fresnel) * alpha;

    if (finalAlpha < 0.001) {
        discard;
    }

    OutColor = vec4(finalColor, finalAlpha * GlobalAlpha);
}
Код:
Expand Collapse Copy
{
  "vertex": "mre:core/liquidglass/vertex",
  "fragment": "mre:core/liquidglass/fragment",
  "samplers": [
    {
      "name": "Sampler0"
    }
  ],
  "uniforms": [
    {
      "name": "ModelViewMat",
      "type": "matrix4x4",
      "count": 16,
      "values": [1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]
    },
    {
      "name": "ProjMat",
      "type": "matrix4x4",
      "count": 16,
      "values": [1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]
    },
    {
      "name": "Size",
      "type": "float",
      "count": 2,
      "values": [0.0, 0.0]
    },
    {
      "name": "Radius",
      "type": "float",
      "count": 4,
      "values": [0.0, 0.0, 0.0, 0.0]
    },
    {
      "name": "Smoothness",
      "type": "float",
      "count": 1,
      "values": [1.0]
    },
    {
      "name": "CornerSmoothness",
      "type": "float",
      "count": 1,
      "values": [2.0]
    },
    {
      "name": "GlobalAlpha",
      "type": "float",
      "count": 1,
      "values": [1.0]
    },
    {
      "name": "FresnelPower",
      "type": "float",
      "count": 1,
      "values": [2.0]
    },
    {
      "name": "FresnelColor",
      "type": "float",
      "count": 3,
      "values": [1.0, 1.0, 1.0]
    },
    {
      "name": "FresnelAlpha",
      "type": "float",
      "count": 1,
      "values": [0.8]
    },
    {
      "name": "BaseAlpha",
      "type": "float",
      "count": 1,
      "values": [0.2]
    },
    {
      "name": "FresnelInvert",
      "type": "int",
      "count": 1,
      "values": [0]
    },
    {
      "name": "FresnelMix",
      "type": "float",
      "count": 1,
      "values": [1.0]
    },
    {
      "name": "DistortStrength",
      "type": "float",
      "count": 1,
      "values": [0.03]
    }
  ]
}
Код:
Expand Collapse Copy
#version 150

#moj_import <mre:common.glsl>

in vec3 Position;
in vec2 UV0;
in vec4 Color;

uniform mat4 ModelViewMat;
uniform mat4 ProjMat;

out vec2 FragCoord;
out vec2 TexCoord;
out vec4 FragColor;

void main() {
    gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
    FragCoord = rvertexcoord(gl_VertexID);
    TexCoord = UV0;
    FragColor = Color;
}
Код:
Expand Collapse Copy
package fun.rich.utils.display.shape.implement;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.gl.*;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.BufferRenderer;
import net.minecraft.client.render.VertexFormat;
import net.minecraft.client.render.VertexFormats;
import net.minecraft.util.Identifier;
import org.joml.Matrix4f;
import org.joml.Vector2f;
import org.joml.Vector3f;
import org.joml.Vector4f;
import org.lwjgl.opengl.GL13;
import fun.rich.utils.display.shape.Shape;
import fun.rich.utils.display.shape.ShapeProperties;
import fun.rich.utils.display.interfaces.QuickImports;
import fun.rich.utils.display.color.ColorAssist;

public class LiquidGlass implements Shape, QuickImports {
    private final ShaderProgramKey SHADER_KEY = new ShaderProgramKey(Identifier.of("minecraft", "core/blur"), VertexFormats.POSITION, Defines.EMPTY);
    public Framebuffer input;
    public Vector2f resolution = new Vector2f();

    private float smoothness = 1.0f;
    private float cornerSmoothness = 2.0f;
    private float globalAlpha = 1.0f;
    private float fresnelPower = 2.0f;
    private float fresnelAlpha = 0.8f;
    private float baseAlpha = 0.2f;
    private float distortStrength = 0.05f;
    private boolean fresnelInvert = false;
    private float fresnelMix = 1.0f;
    private float fresnelColorR = 1.0f;
    private float fresnelColorG = 1.0f;
    private float fresnelColorB = 1.0f;

    @Override
    public void render(ShapeProperties shape) {
        RenderSystem.enableBlend();
        RenderSystem.defaultBlendFunc();
        RenderSystem.enableDepthTest();
        RenderSystem.enableCull();

        float scale = (float) mc.getWindow().getScaleFactor();
        float alpha = RenderSystem.getShaderColor()[3];
        Matrix4f matrix4f = shape.getMatrix().peek().getPositionMatrix();
        Vector3f pos = matrix4f.transformPosition(shape.getX(), shape.getY(), 0, new Vector3f()).mul(scale);
        Vector3f size = matrix4f.getScale(new Vector3f()).mul(scale);
        Vector4f round = shape.getRound().mul(size.y);
        float quality = shape.getQuality();
        float softness = shape.getSoftness();
        float thickness = shape.getThickness();
        float width = shape.getWidth() * size.x;
        float height = shape.getHeight() * size.y;

        BufferBuilder buffer = tessellator.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION);
        drawEngine.quad(matrix4f, buffer, shape.getX() - softness / 2, shape.getY() - softness / 2, shape.getWidth() + softness, shape.getHeight() + softness);

        GlStateManager._activeTexture(GL13.GL_TEXTURE0);
        if (input != null) RenderSystem.bindTexture(input.getColorAttachment());
        ShaderProgram shader = RenderSystem.setShader(SHADER_KEY);
        shader.getUniformOrDefault("size").set(width, height);
        shader.getUniformOrDefault("location").set(pos.x, window.getHeight() - height - pos.y);
        shader.getUniformOrDefault("radius").set(round);
        shader.getUniformOrDefault("softness").set(softness);
        shader.getUniformOrDefault("thickness").set(thickness);
        shader.getUniformOrDefault("Quality").set(quality);
        shader.getUniformOrDefault("color1").set(ColorAssist.redf(shape.getColor().x), ColorAssist.greenf(shape.getColor().x), ColorAssist.bluef(shape.getColor().x), ColorAssist.alphaf(ColorAssist.multAlpha(shape.getColor().x, alpha)));
        shader.getUniformOrDefault("color2").set(ColorAssist.redf(shape.getColor().y), ColorAssist.greenf(shape.getColor().y), ColorAssist.bluef(shape.getColor().y), ColorAssist.alphaf(ColorAssist.multAlpha(shape.getColor().y, alpha)));
        shader.getUniformOrDefault("color3").set(ColorAssist.redf(shape.getColor().z), ColorAssist.greenf(shape.getColor().z), ColorAssist.bluef(shape.getColor().z), ColorAssist.alphaf(ColorAssist.multAlpha(shape.getColor().z, alpha)));
        shader.getUniformOrDefault("color4").set(ColorAssist.redf(shape.getColor().w), ColorAssist.greenf(shape.getColor().w), ColorAssist.bluef(shape.getColor().w), ColorAssist.alphaf(ColorAssist.multAlpha(shape.getColor().w, alpha)));
        shader.getUniformOrDefault("outlineColor").set(ColorAssist.redf(shape.getOutlineColor()), ColorAssist.greenf(shape.getOutlineColor()), ColorAssist.bluef(shape.getOutlineColor()), ColorAssist.alphaf(ColorAssist.multAlpha(shape.getOutlineColor(), alpha)));
        shader.getUniformOrDefault("InputResolution").set(resolution.x, resolution.y);

        BufferRenderer.drawWithGlobalProgram(buffer.end());
        RenderSystem.disableBlend();
    }

    public void setup() {
        Framebuffer buffer = mc.getFramebuffer();
        if (input == null) {
            input = new SimpleFramebuffer(mc.getWindow().getScaledWidth(), mc.getWindow().getScaledHeight(), false);
        }
        input.beginWrite(false);
        buffer.draw(input.textureWidth, input.textureHeight);
        buffer.beginWrite(false);
        if (input != null && (input.textureWidth != mc.getWindow().getFramebufferWidth() || input.textureHeight != mc.getWindow().getFramebufferHeight())) {
            input.resize(mc.getWindow().getFramebufferWidth(), mc.getWindow().getFramebufferHeight());
        }
        resolution.set((float) buffer.textureWidth, (float) buffer.textureHeight);
    }

    public LiquidGlass setSmoothness(float smoothness) {
        this.smoothness = smoothness;
        return this;
    }

    public LiquidGlass setCornerSmoothness(float cornerSmoothness) {
        this.cornerSmoothness = cornerSmoothness;
        return this;
    }

    public LiquidGlass setGlobalAlpha(float globalAlpha) {
        this.globalAlpha = globalAlpha;
        return this;
    }

    public LiquidGlass setFresnelPower(float fresnelPower) {
        this.fresnelPower = fresnelPower;
        return this;
    }

    public LiquidGlass setFresnelAlpha(float fresnelAlpha) {
        this.fresnelAlpha = fresnelAlpha;
        return this;
    }

    public LiquidGlass setBaseAlpha(float baseAlpha) {
        this.baseAlpha = baseAlpha;
        return this;
    }

    public LiquidGlass setDistortStrength(float distortStrength) {
        this.distortStrength = distortStrength;
        return this;
    }

    public LiquidGlass setFresnelInvert(boolean fresnelInvert) {
        this.fresnelInvert = fresnelInvert;
        return this;
    }

    public LiquidGlass setFresnelMix(float fresnelMix) {
        this.fresnelMix = fresnelMix;
        return this;
    }

    public LiquidGlass setFresnelColor(float r, float g, float b) {
        this.fresnelColorR = r;
        this.fresnelColorG = g;
        this.fresnelColorB = b;
        return this;
    }
}
вроде всё
Посмотреть вложение 335281
1 в 1
1778178641433.png
 
И нахуй ты тогда этот мусор постишь на не менее мусорный форум?
потому что ищу надежду на помощь. А форум, "почти" мусор, но мусором бы я его не назвал бы. "Мусор" - то что я делаю лично для себя?
 
держи брат не жалко

jopa:
Expand Collapse Copy
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    // Normalized pixel coordinates (from 0 to 1)
    vec2 uv = fragCoord/iResolution.xy;
    vec2 mouse = iMouse.xy;
    if (length(mouse)<1.0) {
        mouse = iResolution.xy/2.0;
    } vec2 m2 = (uv-mouse/iResolution.xy);
    
    float roundedBox = pow(abs(m2.x*iResolution.x/iResolution.y),8.0)+pow(abs(m2.y),8.0);   
    float rb1 = clamp((1.0-roundedBox*10000.0)*8.0, 0.,1.); // rounded box
    float rb2 = clamp((0.95-roundedBox*9500.0)*16.0, 0.,1.)-clamp(pow(0.9-roundedBox*9500.0, 1.0)*16.0, 0.,1.); // borders
    float rb3 = (clamp((1.5-roundedBox*11000.0)*2.0, 0.,1.)-clamp(pow(1.0-roundedBox*11000.0, 1.0)*2.0, 0.,1.)); // shadow gradient

    fragColor = vec4(0);
    
    float transition = smoothstep(0.0, 1.0, rb1+rb2);
    
    if (transition>0.0) {
    
        vec2 lens;
        
        // Sample 0
        lens = ((uv-0.5)*1.0*(1.0-roundedBox*5000.0)+0.5);
        
        // Sample 1
        // lens = ((uv-0.5)*1.0*(1.0-roundedBox*1000.0)+0.5);
        
        // Sample 2
        // lens = ((uv-0.5)*(roundedBox*1000.0+0.9)+0.5);
        
        // Sample 3
        // lens = ((uv-0.5)*0.9*(roundedBox*5000.0+0.9)+0.5);
      
        // Blur
        float total = 0.0;
        for (float x = -4.0; x <= 4.0; x++) {
            for (float y = -4.0; y <= 4.0; y++) {
                vec2 offset = vec2(x, y) * 0.5 / iResolution.xy;
                fragColor += texture(iChannel0, offset+lens);
                total += 1.0;
            }
        } fragColor/=total;
        
        // Lighting
        float gradient = clamp( (clamp(m2.y,0.0,0.2)+0.1)/2.0, 0.,1.) + clamp( (clamp(-m2.y,-1000.0,0.2)*rb3+0.1)/2.0, 0.,1.);
        vec4 lighting = clamp(fragColor+vec4(rb1)*gradient+vec4(rb2)*0.3, 0.,1.);
        
        // Antialiasing
        fragColor = mix(texture(iChannel0, uv), lighting, transition);
        
    } else {
        fragColor = texture(iChannel0, uv);
    }
}
 
держи брат не жалко

jopa:
Expand Collapse Copy
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    // Normalized pixel coordinates (from 0 to 1)
    vec2 uv = fragCoord/iResolution.xy;
    vec2 mouse = iMouse.xy;
    if (length(mouse)<1.0) {
        mouse = iResolution.xy/2.0;
    } vec2 m2 = (uv-mouse/iResolution.xy);
  
    float roundedBox = pow(abs(m2.x*iResolution.x/iResolution.y),8.0)+pow(abs(m2.y),8.0); 
    float rb1 = clamp((1.0-roundedBox*10000.0)*8.0, 0.,1.); // rounded box
    float rb2 = clamp((0.95-roundedBox*9500.0)*16.0, 0.,1.)-clamp(pow(0.9-roundedBox*9500.0, 1.0)*16.0, 0.,1.); // borders
    float rb3 = (clamp((1.5-roundedBox*11000.0)*2.0, 0.,1.)-clamp(pow(1.0-roundedBox*11000.0, 1.0)*2.0, 0.,1.)); // shadow gradient

    fragColor = vec4(0);
  
    float transition = smoothstep(0.0, 1.0, rb1+rb2);
  
    if (transition>0.0) {
  
        vec2 lens;
      
        // Sample 0
        lens = ((uv-0.5)*1.0*(1.0-roundedBox*5000.0)+0.5);
      
        // Sample 1
        // lens = ((uv-0.5)*1.0*(1.0-roundedBox*1000.0)+0.5);
      
        // Sample 2
        // lens = ((uv-0.5)*(roundedBox*1000.0+0.9)+0.5);
      
        // Sample 3
        // lens = ((uv-0.5)*0.9*(roundedBox*5000.0+0.9)+0.5);
    
        // Blur
        float total = 0.0;
        for (float x = -4.0; x <= 4.0; x++) {
            for (float y = -4.0; y <= 4.0; y++) {
                vec2 offset = vec2(x, y) * 0.5 / iResolution.xy;
                fragColor += texture(iChannel0, offset+lens);
                total += 1.0;
            }
        } fragColor/=total;
      
        // Lighting
        float gradient = clamp( (clamp(m2.y,0.0,0.2)+0.1)/2.0, 0.,1.) + clamp( (clamp(-m2.y,-1000.0,0.2)*rb3+0.1)/2.0, 0.,1.);
        vec4 lighting = clamp(fragColor+vec4(rb1)*gradient+vec4(rb2)*0.3, 0.,1.);
      
        // Antialiasing
        fragColor = mix(texture(iChannel0, uv), lighting, transition);
      
    } else {
        fragColor = texture(iChannel0, uv);
    }
}
спасибо за шейдертой
 
Проблема в том что шейдертой НЕ подходит для майна
Так всё что тебе нужно оттуда это сама логика которая везде одинаковая, понятное дело что просто ктрл ц ктрл в оно работать не будет
 
Проблема в том что шейдертой НЕ подходит для майна
Проблема в том что шейдертой НЕ подходит для майна
погоди, реально? Привет чат гпт, сделай мне шейдер с shadertoy под мою систему рендера шейдеров в майнкрафте
 
Назад
Сверху Снизу