add a heightsource option so one can "regenerate" normalmaps
[xonotic/xonotic.git] / misc / tools / normalmap.sh
1 #!/bin/sh
2
3 # usage: ./bump2norm.sh foo_bump.tga foo_norm.tga
4 # NOTE: unfortunately requires X-server (otherwise file-tga-save won't work... no joke)
5
6 in=$1
7 out=$2
8
9 # env variables you can set:
10 # filter:
11 #   Filter type (0 = 4 sample, 1 = sobel 3x3, 2 = sobel 5x5, 3 = prewitt 3x3, 4 = prewitt 5x5, 5-8 = 3x3,5x5,7x7,9x9)
12 # minz:
13 #   Minimun Z (0 to 1)
14 # scale:
15 #   Scale (>0)
16 # heightsource:
17 #   Height source (0 = average RGB, 1 = alpha channel)
18 # conv:
19 #   Conversion (0 = none, 1 = Biased RGB, 2 = Red, 3 = Green, 4 = Blue, 5 = Max RGB, 6 = Min RGB, 7 = Colorspace)
20 : ${filter:=0}
21 : ${minz:=0}
22 : ${scale:=1}
23 : ${heightsource:=0}
24 : ${conv:=0}
25
26 gimp -i -b - <<EOF
27
28 (let*(
29                 (img (car (gimp-file-load RUN-NONINTERACTIVE "$in" "$in")))
30                 (drawable (car (gimp-image-active-drawable img)))
31                 (layer (car (gimp-image-get-active-layer img)))
32         )
33         (gimp-layer-add-alpha layer)
34         (plug-in-normalmap RUN-NONINTERACTIVE img drawable $filter $minz $scale 1 $heightsource 1 $conv 0 0 1 0 1 layer)
35         (file-tga-save RUN-NONINTERACTIVE img drawable "$out" "$out" 1 1)
36         (gimp-quit 0)
37 )
38
39 EOF