mirror of
https://github.com/BinomialLLC/basis_universal.git
synced 2026-06-08 00:23:52 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -1,31 +1,50 @@
|
||||
Python+GLSL Shader Deblocking Sample
|
||||
# Python+GLSL Shader Deblocking Sample
|
||||
|
||||
This sample demonstrates how to use a simpler pixel shader to greatly reduce
|
||||
ASTC block artifacts, which can be quite noticeable when the block size goes
|
||||
beyond roughly 6x6. The shader determines if it's going to sample near an edge,
|
||||
and if so it samples a small vertical and horizontal region around the texel
|
||||
and applies a small low pass filter. The example shader is compatible with
|
||||
mipmapping, bilinear filtering, trilinear filtering etc.
|
||||
mipmapping, bilinear filtering, trilinear filtering etc. It was written to
|
||||
be as simple as possible.
|
||||
|
||||
You'll need these Python dependencies to run it:
|
||||
>pip install numpy Pillow glfw PyOpenGL
|
||||
```
|
||||
pip install numpy Pillow glfw PyOpenGL
|
||||
```
|
||||
|
||||
See `run.bat` for the command line on how to run the sample. Or run:
|
||||
|
||||
>py -3.12 testbed.py shader.glsl 12 12 flower_unpacked_rgb_ASTC_LDR_12X12_RGBA_level_0_face_0_layer_0000.png flower_unpacked_rgb_ASTC_LDR_12X12_RGBA_level_1_face_0_layer_0000.png flower_unpacked_rgb_ASTC_LDR_12X12_RGBA_level_2_face_0_layer_0000.png flower_unpacked_rgb_ASTC_LDR_12X12_RGBA_level_3_face_0_layer_0000.png flower_unpacked_rgb_ASTC_LDR_12X12_RGBA_level_4_face_0_layer_0000.png
|
||||
```
|
||||
py -3.12 testbed.py shader.glsl 12 12 flower_unpacked_rgb_ASTC_LDR_12X12_RGBA_level_0_face_0_layer_0000.png flower_unpacked_rgb_ASTC_LDR_12X12_RGBA_level_1_face_0_layer_0000.png flower_unpacked_rgb_ASTC_LDR_12X12_RGBA_level_2_face_0_layer_0000.png flower_unpacked_rgb_ASTC_LDR_12X12_RGBA_level_3_face_0_layer_0000.png flower_unpacked_rgb_ASTC_LDR_12X12_RGBA_level_4_face_0_layer_0000.png
|
||||
```
|
||||
|
||||
The shader can be easily simplified to sample the texture less by using less taps. The current shader uses a total of 9 taps, but 5 are possible.
|
||||
|
||||
Many variations and optimizations of this basic idea are possible.
|
||||
|
||||
---
|
||||
Enabled:
|
||||
|
||||
## Screenshots - ASTC 12x12 Block Size
|
||||
|
||||
**Disabled:**
|
||||

|
||||
|
||||
**Enabled:**
|
||||

|
||||
|
||||
---
|
||||
|
||||
**Disabled:**
|
||||

|
||||
|
||||
**Enabled:**
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Usage and Controls
|
||||
|
||||
Usage:
|
||||
python testbed.py shader.glsl block_w block_h mip0.png mip1.png [mip2.png ...]
|
||||
block_w, block_h: Block size in texels (e.g. 8 8 for 8x8 DCT blocks)
|
||||
@@ -49,8 +68,11 @@ Controls:
|
||||
|
||||
---
|
||||
|
||||
## Credits
|
||||
|
||||
The included sunflower image is in the CC0/Public Domain, and was downloaded from here:
|
||||
|
||||
https://www.publicdomainpictures.net/en/view-image.php?image=756601&picture=large-yellow-sunflower
|
||||
|
||||
"License: CC0 Public Domain - Lynn Greyling has released this “Large Yellow Sunflower” image under Public Domain license."
|
||||
|
||||
|
||||
Reference in New Issue
Block a user