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";
39 die "{ line contains other stuff"
41 die "{ line without shader name"
42 unless defined $curshader;
43 die "{ line in level $level"
47 elsif($line[0] eq '}')
49 die "} line contains other stuff"
51 die "} line without shader name"
52 unless defined $curshader;
53 die "{ line in level $level"
60 if(!@match || grep { $_ eq $curshader } @match)
62 printf "%s %s\n", Digest::MD5::md5_hex($shadertext), $curshader;
64 if($find_texture_names)
66 # find out possibly loaded textures
67 my @maps = ($shadertext =~ /^(?:clampmap|map|q3r_lightimage|q3r_editorimage) ([^\$].*)$/gim);
68 for($shadertext =~ /^animmap \S+ (.*)$/gim)
70 push @maps, split / /, $_;
72 for($shadertext =~ /^skyparms (.*)$/gim)
77 push @maps, "$_"."_lf";
78 push @maps, "$_"."_ft";
79 push @maps, "$_"."_rt";
80 push @maps, "$_"."_bk";
81 push @maps, "$_"."_up";
82 push @maps, "$_"."_dn";
87 printf "* %s %s\n", $_, $curshader
88 for map { normalize_path $_ } @maps;
93 print "| $_\n" for split /\n/, $shadertext;
102 die "shader name already set"
103 if defined $curshader;
104 $curshader = normalize_path $line[0];
111 die "missing } line";