mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-14 22:45:40 +02:00
* wip
* wip
* Update ImageEffector.ts
* Update image-label-renderer.ts
* Update image-label-renderer.ts
* wip
* Update image-label-renderer.ts
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* Update use-uploader.ts
* Update watermark.ts
* wip
* wu
* wip
* Update image-frame-renderer.ts
* wip
* wip
* Update image-frame-renderer.ts
* Create ImageCompositor.ts
* Update ImageCompositor.ts
* wip
* wip
* Update ImageEffector.ts
* wip
* Update use-uploader.ts
* wip
* wip
* wip
* wip
* Update fxs.ts
* wip
* wip
* wip
* Update CHANGELOG.md
* wip
* wip
* Update MkImageEffectorDialog.vue
* Update MkImageEffectorDialog.vue
* Update MkImageFrameEditorDialog.vue
* Update use-uploader.ts
* improve error handling
* Update use-uploader.ts
* 🎨
* wip
* wip
* lazy load
* lazy load
* wip
* wip
* wip
49 lines
1.4 KiB
GLSL
49 lines
1.4 KiB
GLSL
#version 300 es
|
|
precision mediump float;
|
|
|
|
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
// エイリアスを解決してくれないので、プロジェクトルートからの絶対パスにする必要がある
|
|
#include /src/shaders/snoise;
|
|
|
|
in vec2 in_uv;
|
|
uniform sampler2D in_texture;
|
|
uniform vec2 in_resolution;
|
|
uniform vec2 u_pos;
|
|
uniform float u_frequency;
|
|
uniform bool u_thresholdEnabled;
|
|
uniform float u_threshold;
|
|
uniform float u_maskSize;
|
|
uniform bool u_black;
|
|
out vec4 out_color;
|
|
|
|
void main() {
|
|
vec4 in_color = texture(in_texture, in_uv);
|
|
vec2 centeredUv = (in_uv - vec2(0.5, 0.5));
|
|
vec2 uv = centeredUv;
|
|
|
|
float seed = 1.0;
|
|
float time = 0.0;
|
|
|
|
vec2 noiseUV = (uv - u_pos) / distance((uv - u_pos), vec2(0.0));
|
|
float noiseX = (noiseUV.x + seed) * u_frequency;
|
|
float noiseY = (noiseUV.y + seed) * u_frequency;
|
|
float noise = (1.0 + snoise(vec3(noiseX, noiseY, time))) / 2.0;
|
|
|
|
float t = noise;
|
|
if (u_thresholdEnabled) t = t < u_threshold ? 1.0 : 0.0;
|
|
|
|
// TODO: マスクの形自体も揺らぎを与える
|
|
float d = distance(uv * vec2(2.0, 2.0), u_pos * vec2(2.0, 2.0));
|
|
float mask = d < u_maskSize ? 0.0 : ((d - u_maskSize) * (1.0 + (u_maskSize * 2.0)));
|
|
out_color = vec4(
|
|
mix(in_color.r, u_black ? 0.0 : 1.0, t * mask),
|
|
mix(in_color.g, u_black ? 0.0 : 1.0, t * mask),
|
|
mix(in_color.b, u_black ? 0.0 : 1.0, t * mask),
|
|
in_color.a
|
|
);
|
|
}
|