Dithering
This commit is contained in:
parent
e5cbc4ca5f
commit
120a70cf42
Binary file not shown.
After Width: | Height: | Size: 82 B |
Binary file not shown.
After Width: | Height: | Size: 82 B |
Binary file not shown.
After Width: | Height: | Size: 82 B |
|
@ -15,13 +15,25 @@ uniform vec4 colDiffuse;
|
||||||
|
|
||||||
out vec4 finalColor;
|
out vec4 finalColor;
|
||||||
|
|
||||||
|
const int bayer16[16] = int[16](0, 8, 2, 10,
|
||||||
|
12, 4, 14, 6,
|
||||||
|
3, 11, 1, 9,
|
||||||
|
15, 7, 13, 5);
|
||||||
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
vec4 texelColor = texture(texture0, fragTexCoord);
|
vec4 texelColor = texture(texture0, fragTexCoord);
|
||||||
float grey = 0.21 * texelColor.r + 0.71 * texelColor.g + 0.07 * texelColor.b ;
|
float grey = 0.21 * texelColor.r + 0.71 * texelColor.g + 0.07 * texelColor.b ;
|
||||||
|
int col = int(mod(gl_FragCoord.x, 4));
|
||||||
|
int row = int(mod(gl_FragCoord.y, 4));
|
||||||
|
float threshold = float(bayer16[col + 4 * row]) / 16.0 - 0.5;
|
||||||
|
grey = clamp(grey + threshold * 0.04 + 0.15 , 0.01, 0.99);
|
||||||
|
|
||||||
vec2 paluv = vec2(grey, 0.5);
|
vec2 paluv = vec2(grey, 0.5);
|
||||||
vec4 paletteValue = texture(texture1, paluv);
|
vec4 paletteValue = texture(texture1, paluv);
|
||||||
|
|
||||||
finalColor.a = 1.0;
|
finalColor.a = 1.0;
|
||||||
|
// finalColor.rgb = vec3(floor(grey * POSTERIZE) / POSTERIZE );
|
||||||
|
|
||||||
// finalColor.rgb = floor(texelColor.rgb * POSTERIZE) / POSTERIZE;
|
// finalColor.rgb = floor(texelColor.rgb * POSTERIZE) / POSTERIZE;
|
||||||
|
|
||||||
finalColor.rgb = paletteValue.rgb;
|
finalColor.rgb = paletteValue.rgb;
|
||||||
|
|
|
@ -51,10 +51,11 @@ main :: proc() {
|
||||||
|
|
||||||
|
|
||||||
w, h := rl.GetScreenWidth(), rl.GetScreenHeight()
|
w, h := rl.GetScreenWidth(), rl.GetScreenHeight()
|
||||||
pixelize: i32 = 2
|
pixelize: i32 = 3
|
||||||
target := rl.LoadRenderTexture(w / pixelize, h / pixelize)
|
target := rl.LoadRenderTexture(w / pixelize, h / pixelize)
|
||||||
|
posttarget := rl.LoadRenderTexture(w / pixelize, h / pixelize)
|
||||||
|
|
||||||
palette := rl.LoadTexture("assets/gfx/blood-crow-1x.png")
|
palette := rl.LoadTexture("assets/gfx/bluem0ld-1x.png")
|
||||||
rl.SetTextureFilter(palette, .POINT)
|
rl.SetTextureFilter(palette, .POINT)
|
||||||
|
|
||||||
|
|
||||||
|
@ -145,6 +146,8 @@ main :: proc() {
|
||||||
w, h = rl.GetScreenWidth(), rl.GetScreenHeight()
|
w, h = rl.GetScreenWidth(), rl.GetScreenHeight()
|
||||||
rl.UnloadRenderTexture(target)
|
rl.UnloadRenderTexture(target)
|
||||||
target = rl.LoadRenderTexture(w / pixelize, h / pixelize)
|
target = rl.LoadRenderTexture(w / pixelize, h / pixelize)
|
||||||
|
rl.UnloadRenderTexture(posttarget)
|
||||||
|
posttarget = rl.LoadRenderTexture(w / pixelize, h / pixelize)
|
||||||
}
|
}
|
||||||
rl.UpdateCamera(&cam, .FIRST_PERSON)
|
rl.UpdateCamera(&cam, .FIRST_PERSON)
|
||||||
delta := rl.GetFrameTime()
|
delta := rl.GetFrameTime()
|
||||||
|
@ -197,27 +200,34 @@ main :: proc() {
|
||||||
rl.EndShaderMode()
|
rl.EndShaderMode()
|
||||||
rl.EndMode3D()
|
rl.EndMode3D()
|
||||||
rl.EndTextureMode()
|
rl.EndTextureMode()
|
||||||
rl.BeginDrawing()
|
// rl.BeginDrawing()
|
||||||
|
rl.BeginTextureMode(posttarget)
|
||||||
rl.BeginShaderMode(posterizer)
|
rl.BeginShaderMode(posterizer)
|
||||||
rl.SetShaderValueTexture(posterizer, poster_palette, palette)
|
rl.SetShaderValueTexture(posterizer, poster_palette, palette)
|
||||||
rl.DrawTexturePro(
|
|
||||||
target.texture,
|
|
||||||
rl.Rectangle{0, f32(h / pixelize), f32(w / pixelize), -f32(h / pixelize)},
|
|
||||||
{0, 0, f32(w), f32(h)},
|
|
||||||
{},
|
|
||||||
0,
|
|
||||||
rl.WHITE,
|
|
||||||
)
|
|
||||||
// rl.DrawTexturePro(
|
// rl.DrawTexturePro(
|
||||||
// target.depth,
|
// target.texture,
|
||||||
// rl.Rectangle{0, f32(h / pixelize), f32(w / pixelize), -f32(h / pixelize)},
|
// rl.Rectangle{0, f32(h / pixelize), f32(w / pixelize), -f32(h / pixelize)},
|
||||||
// {0, 0, f32(w), f32(h)},
|
// {0, 0, f32(w), f32(h)},
|
||||||
// {},
|
// {},
|
||||||
// 0,
|
// 0,
|
||||||
// rl.WHITE,
|
// rl.WHITE,
|
||||||
// )
|
// )
|
||||||
|
rl.DrawTexture(target.texture, 0, 0, rl.WHITE)
|
||||||
rl.EndShaderMode()
|
rl.EndShaderMode()
|
||||||
// rl.DrawTexture(palette, 0, 0, rl.WHITE)
|
rl.EndTextureMode()
|
||||||
|
|
||||||
|
rl.BeginDrawing()
|
||||||
|
// rl.BeginTextureMode(posttarget)
|
||||||
|
// rl.BeginShaderMode(posterizer)
|
||||||
|
// rl.SetShaderValueTexture(posterizer, poster_palette, palette)
|
||||||
|
rl.DrawTexturePro(
|
||||||
|
posttarget.texture,
|
||||||
|
rl.Rectangle{0, 0, f32(w / pixelize), f32(h / pixelize)},
|
||||||
|
{0, 0, f32(w), f32(h)},
|
||||||
|
{},
|
||||||
|
0,
|
||||||
|
rl.WHITE,
|
||||||
|
)
|
||||||
rl.EndDrawing()
|
rl.EndDrawing()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue