11 $p =~ s/(?:\.jpg|\.png|\.tga)$//gi;
16 my $find_texture_names = grep { /^-t$/ } @ARGV;
17 my $dump_shaders = grep { /^-d$/ } @ARGV;
18 my @match = grep { !/^-/ } @ARGV;
33 my @line = map { s/"//g; $_; } split /\s+/, $_;
35 $shadertext .= "@line\n";
40 die "{ line without shader name"
41 unless defined $curshader;
42 die "{ line in level $level"
51 elsif($line[0] eq '}')
53 die "} line contains other stuff"
55 die "} line without shader name"
56 unless defined $curshader;
57 die "{ line in level $level"
64 if(!@match || grep { $_ eq $curshader } @match)
66 printf "%s %s\n", Digest::MD5::md5_hex($shadertext), $curshader;
68 if($find_texture_names)
70 # find out possibly loaded textures
71 my @maps = ($shadertext =~ /^(?:clampmap|map|q3r_lightimage|q3r_editorimage) ([^\$].*)$/gim);
72 for($shadertext =~ /^animmap \S+ (.*)$/gim)
74 push @maps, split / /, $_;
76 for($shadertext =~ /^skyparms (.*)$/gim)
81 push @maps, "$_"."_lf";
82 push @maps, "$_"."_ft";
83 push @maps, "$_"."_rt";
84 push @maps, "$_"."_bk";
85 push @maps, "$_"."_up";
86 push @maps, "$_"."_dn";
91 printf "* %s %s\n", $_, $curshader
92 for map { normalize_path $_ } @maps;
97 print "| $_\n" for split /\n/, $shadertext;
106 die "shader name already set"
107 if defined $curshader;
108 $curshader = normalize_path $line[0];
115 die "missing } line";