aboutsummaryrefslogtreecommitdiff
path: root/mp/src/devtools/bin/checkshaderchecksums.pl
blob: 26841cbe233ae708c9d51e88d53993400ea593df (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
use String::CRC32;
BEGIN {use File::Basename; push @INC, dirname($0); }
require "valve_perl_helpers.pl";

sub GetShaderType
{
	my $shadername = shift;
	my $shadertype;
	if( $shadername =~ m/\.vsh/i )
	{
		$shadertype = "vsh";
	}
	elsif( $shadername =~ m/\.psh/i )
	{
		$shadertype = "psh";
	}
	elsif( $shadername =~ m/\.fxc/i )
	{
		$shadertype = "fxc";
	}
	else
	{
		die;
	}
	return $shadertype;
}

sub GetShaderSrc
{
	my $shadername = shift;
	if ( $shadername =~ m/^(.*)-----/i )
	{
		return $1;
	}
	else
	{
		return $shadername;
	}
}

sub GetShaderType
{
	my $shadername = shift;
	my $shadertype;
	if( $shadername =~ m/\.vsh/i )
	{
		$shadertype = "vsh";
	}
	elsif( $shadername =~ m/\.psh/i )
	{
		$shadertype = "psh";
	}
	elsif( $shadername =~ m/\.fxc/i )
	{
		$shadertype = "fxc";
	}
	else
	{
		die;
	}
	return $shadertype;
}

sub GetShaderBase
{
	my $shadername = shift;
	if ( $shadername =~ m/-----(.*)$/i )
	{
		return $1;
	}
	else
	{
		my $shadertype = &GetShaderType( $shadername );
		$shadername =~ s/\.$shadertype//i;
		return $shadername;
	}
}

$g_x360			= 0;
$g_vcsext		= ".vcs";

while( 1 )
{
	$inputbase = shift;

	if( $inputbase =~ m/-x360/ )
	{
		$g_x360 = 1;
		$g_vcsext = ".360.vcs";
	}
	else
	{
		last;
	}
}

# rip the txt off the end if it's there.
$inputbase =~ s/\.txt//i;

my @srcfiles = &LoadShaderListFile( $inputbase );
 
foreach $srcfile ( @srcfiles )
{
	my $shadertype = &GetShaderType( $srcfile );
	my $shaderbase = &GetShaderBase( $srcfile );
	my $shadersrc = &GetShaderSrc( $srcfile );
	my $vcsFileName = "..\\..\\..\\game\\hl2\\shaders\\$shadertype\\$shaderbase" . $g_vcsext;
#	print "shadersrc: $shadersrc vcsFileName: $vcsFileName\n";

	if( $g_x360 && ( $shaderbase =~ m/_ps20$/i ) )
	{
		next; # skip _ps20 files for 360
	}

	&CheckCRCAgainstTarget( $shadersrc, $vcsFileName, 1 );
}