Dithering
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								assets/gfx/bluem0ld-1x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/gfx/bluem0ld-1x.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 82 B  | 
							
								
								
									
										
											BIN
										
									
								
								assets/gfx/fiery-plague-gb-1x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/gfx/fiery-plague-gb-1x.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 82 B  | 
							
								
								
									
										
											BIN
										
									
								
								assets/gfx/look-of-horror-1x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/gfx/look-of-horror-1x.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 82 B  | 
@ -15,13 +15,25 @@ uniform vec4 colDiffuse;
 | 
			
		||||
 | 
			
		||||
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() {
 | 
			
		||||
    vec4 texelColor = texture(texture0, fragTexCoord);
 | 
			
		||||
    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);
 | 
			
		||||
    vec4 paletteValue = texture(texture1, paluv);
 | 
			
		||||
 | 
			
		||||
    finalColor.a = 1.0;
 | 
			
		||||
    // finalColor.rgb = vec3(floor(grey * POSTERIZE) / POSTERIZE );
 | 
			
		||||
 | 
			
		||||
    // finalColor.rgb = floor(texelColor.rgb * POSTERIZE) / POSTERIZE;
 | 
			
		||||
 | 
			
		||||
    finalColor.rgb = paletteValue.rgb;
 | 
			
		||||
 | 
			
		||||
@ -51,10 +51,11 @@ main :: proc() {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	w, h := rl.GetScreenWidth(), rl.GetScreenHeight()
 | 
			
		||||
	pixelize: i32 = 2
 | 
			
		||||
	pixelize: i32 = 3
 | 
			
		||||
	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)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -145,6 +146,8 @@ main :: proc() {
 | 
			
		||||
			w, h = rl.GetScreenWidth(), rl.GetScreenHeight()
 | 
			
		||||
			rl.UnloadRenderTexture(target)
 | 
			
		||||
			target = rl.LoadRenderTexture(w / pixelize, h / pixelize)
 | 
			
		||||
			rl.UnloadRenderTexture(posttarget)
 | 
			
		||||
			posttarget = rl.LoadRenderTexture(w / pixelize, h / pixelize)
 | 
			
		||||
		}
 | 
			
		||||
		rl.UpdateCamera(&cam, .FIRST_PERSON)
 | 
			
		||||
		delta := rl.GetFrameTime()
 | 
			
		||||
@ -197,27 +200,34 @@ main :: proc() {
 | 
			
		||||
		rl.EndShaderMode()
 | 
			
		||||
		rl.EndMode3D()
 | 
			
		||||
		rl.EndTextureMode()
 | 
			
		||||
		rl.BeginDrawing()
 | 
			
		||||
		// rl.BeginDrawing()
 | 
			
		||||
		rl.BeginTextureMode(posttarget)
 | 
			
		||||
		rl.BeginShaderMode(posterizer)
 | 
			
		||||
		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(
 | 
			
		||||
		// 	target.depth,
 | 
			
		||||
		// 	target.texture,
 | 
			
		||||
		// 	rl.Rectangle{0, f32(h / pixelize), f32(w / pixelize), -f32(h / pixelize)},
 | 
			
		||||
		// 	{0, 0, f32(w), f32(h)},
 | 
			
		||||
		// 	{},
 | 
			
		||||
		// 	0,
 | 
			
		||||
		// 	rl.WHITE,
 | 
			
		||||
		// )
 | 
			
		||||
		rl.DrawTexture(target.texture, 0, 0, rl.WHITE)
 | 
			
		||||
		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()
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user