Blur and noise adjustment layers, Image Trim, Inner Glow (12.8c)

This commit is contained in:
雷电芽衣 committed 2026-09-28 08:35:59 -04:00
1 parent 7ae263de80
commit 31e2dd3864
60 files changed
+1673 -105

No files matched your search

+9 -1
View File
@@ -14,6 +14,12 @@ static inline float noise_unit(uint32_t key) { return (float)(noise_hash(key) >>
void noise_add(uint8_t *rgba, size_t width, size_t height, size_t stride,
float amount, int gaussian, int monochromatic, uint32_t seed) {
noise_add_at(rgba, width, height, stride, amount, gaussian, monochromatic, seed, 0, 0);
}
void noise_add_at(uint8_t *rgba, size_t width, size_t height, size_t stride,
float amount, int gaussian, int monochromatic, uint32_t seed,
int64_t origin_x, int64_t origin_y) {
float spread = amount / 100.0f * 127.5f;
for (size_t y = 0; y < height; ++y) {
uint8_t *row = rgba + y * stride;
@@ -21,7 +27,9 @@ void noise_add(uint8_t *rgba, size_t width, size_t height, size_t stride,
uint8_t *p = row + x * 4;
unsigned alpha = p[3];
if (!alpha) continue;
uint32_t base = noise_hash(seed ^ noise_hash((uint32_t)(y * width + x)));
uint32_t px = (uint32_t)(origin_x + (int64_t)x);
uint32_t py = (uint32_t)(origin_y + (int64_t)y);
uint32_t base = noise_hash(seed ^ noise_hash(px * 0x9e3779b9U ^ noise_hash(py * 0x85ebca6bU)));
for (int c = 0; c < 3; ++c) {
uint32_t key = monochromatic ? base : base + (uint32_t)c * 0x9e3779b9U;
float n;
+3
View File
@@ -9,4 +9,7 @@
// Each pixel's noise depends only on its position and `seed`, so the same seed gives the same grain.
void noise_add(uint8_t *rgba, size_t width, size_t height, size_t stride,
float amount, int gaussian, int monochromatic, uint32_t seed);
void noise_add_at(uint8_t *rgba, size_t width, size_t height, size_t stride,
float amount, int gaussian, int monochromatic, uint32_t seed,
int64_t origin_x, int64_t origin_y);
#endif