]> icculus.org git repositories - divverent/nexuiz.git/blob - misc/tools/shader-checksums.pl
shader checksum script
[divverent/nexuiz.git] / misc / tools / shader-checksums.pl
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Digest::MD5;
6
7 my $shadertext = "";
8 my $level = 0;
9 my $curshader;
10 while(<STDIN>)
11 {
12         s/\r//gs;
13         chomp;
14
15         s/\/\/.*//s;
16         s/^\s+//;
17         s/\s+$//;
18         next if /^$/;
19
20         my @line = map { s/"//g; $_; } split /\s+/, $_;
21
22         $shadertext .= "@line\n";
23
24         if($line[0] eq '{')
25         {
26                 ++$level;
27         }
28         elsif($line[0] eq '}')
29         {
30                 --$level;
31                 if($level <= 0)
32                 {
33                         $level = 0;
34                         if(defined $curshader)
35                         {
36                                 printf "%s  %s\n", Digest::MD5::md5_hex($shadertext), $curshader;
37                         }
38                         $curshader = undef;
39                 }
40         }
41         elsif($level == 0)
42         {
43                 $curshader = $line[0];
44                 $shadertext = "";
45         }
46 }