Start texturing

This commit is contained in:
Miloslav Ciz 2024-07-29 17:42:40 +02:00
parent 67567e210a
commit d02b8b4ec3
5 changed files with 752 additions and 728 deletions

View file

@ -144,7 +144,7 @@ int main(void)
for (int i = 0; i < 8; ++i)
{
unsigned int color = palette[j * 32 + i];
unsigned int color = palette[j * 8 + i];
printf("0x%02x,0x%02x,",color & 0xff,color >> 8);
}

View file

@ -1,79 +0,0 @@
import sys
from PIL import Image
def rgbTo565(rgb):
return ((rgb[0] >> 3) << 11) | ((rgb[1] >> 2) << 5) | ((rgb[2] >> 3))
def colorDist(c1,c2):
return abs((c1 & 0x1f) - (c2 & 0x1f)) + abs(((c1 >> 5) & 0x3f) - ((c2 >> 5) & 0x3f)) + abs((c1 >> 11) - (c2 >> 11))
FILENAME = sys.argv[1]
image = Image.open(FILENAME).convert("RGB")
IMG_SIZE = image.size[0]
pixels = image.load()
outArray = []
if IMG_SIZE == 64: # normal texture
for y in range(IMG_SIZE):
for x in range(IMG_SIZE):
outArray.append(rgbTo565(pixels[(x,y)]))
else: # sky texture
hist = [0 for i in range(65536)]
for y in range(IMG_SIZE):
for x in range(IMG_SIZE):
hist[rgbTo565(pixels[(x,y)])] += 1
for i in range(256): # make the palette from 256 most common colors
histMaxIndex = 0
for j in range(65536):
if hist[j] > hist[histMaxIndex]:
histMaxIndex = j
outArray.append(histMaxIndex)
hist[histMaxIndex] = -1
odd = True
for y in range(IMG_SIZE):
for x in range(IMG_SIZE):
pixel = rgbTo565(pixels[(x,y)])
closestIndex = 0
closestDist = 1000
for i in range(256):
dist = colorDist(pixel,outArray[i])
if dist < closestDist:
closestDist = dist
closestIndex = i
if closestDist == 0:
break
if odd:
outArray.append(closestIndex)
odd = False
else:
outArray[-1] = outArray[-1] | (closestIndex << 8)
odd = True
outStr = ""
for i in range(len(outArray)):
if i % 16 == 0:
outStr += "\n "
outStr += "{0:#0{1}x}".format(outArray[i],6)
if i != len(outArray) - 1:
outStr += ","
print(outStr)