forked from 0ad/0ad
Texture converter, DevIL: ABGR DDS support.
Textures: converted ARGB to ABGR. Misc: warning fixes, etc. This was SVN commit r3631.
This commit is contained in:
parent
1c1bfcbb53
commit
ed38414b41
BIN
binaries/data/mods/official/art/textures/ui/session/counter_edge.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/counter_edge.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/counter_icon.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/counter_icon.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/counter_tile.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/counter_tile.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/icons/advanced.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/icons/advanced.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bar.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bar.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/banner.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/banner.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/button_flare.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/button_flare.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/button_idle.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/button_idle.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/command.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/command.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/portrait.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/portrait.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/portrait_black.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/portrait_black.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/statistic.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/statistic.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/tab.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/icons/bkg/tab.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/icons/elite.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/icons/elite.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/minimap_pane.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/minimap_pane.dds
(Stored with Git LFS)
Binary file not shown.
BIN
binaries/data/mods/official/art/textures/ui/session/status_pane.dds
(Stored with Git LFS)
BIN
binaries/data/mods/official/art/textures/ui/session/status_pane.dds
(Stored with Git LFS)
Binary file not shown.
@ -199,6 +199,11 @@ void CObjectManager::GetAllObjectNames(std::vector<CStr>& names)
|
||||
VFSUtil::EnumDirEnts("art/actors/", VFSUtil::RECURSIVE, "*.xml",
|
||||
GetObjectName_ThunkCb, &names);
|
||||
}
|
||||
void CObjectManager::GetPropObjectNames(std::vector<CStr>& names)
|
||||
{
|
||||
VFSUtil::EnumDirEnts("art/actors/props/", VFSUtil::RECURSIVE, "*.xml",
|
||||
GetObjectName_ThunkCb, &names);
|
||||
}
|
||||
|
||||
struct CObjectThing_Entity : public CObjectThing
|
||||
{
|
||||
|
@ -73,6 +73,7 @@ public:
|
||||
|
||||
// Get all names, quite slowly. (Intended only for ScEd.)
|
||||
void GetAllObjectNames(std::vector<CStr>& names);
|
||||
void GetPropObjectNames(std::vector<CStr>& names);
|
||||
|
||||
//CBaseEntity* m_SelectedEntity;
|
||||
void SetSelectedEntity(CBaseEntity* thing);
|
||||
|
@ -38,7 +38,7 @@ public:
|
||||
float m_TWaterTrans;
|
||||
float m_SWaterScrollCounter;
|
||||
float m_TWaterScrollCounter;
|
||||
float m_WaterTexTimer;
|
||||
double m_WaterTexTimer;
|
||||
|
||||
public:
|
||||
WaterManager();
|
||||
|
@ -1688,4 +1688,4 @@ jsval CEntity::SetRun( JSContext* cx, uintN argc, jsval* argv )
|
||||
jsval CEntity::GetRunState( JSContext* UNUSED(cx), uintN UNUSED(argc), jsval* UNUSED(argv) )
|
||||
{
|
||||
return m_isRunning;
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,8 @@
|
||||
template<typename T> class DeltaArray2D
|
||||
{
|
||||
public:
|
||||
virtual ~DeltaArray2D() {}
|
||||
|
||||
T get(int x, int y);
|
||||
void set(int x, int y, const T& val);
|
||||
|
||||
|
@ -60,7 +60,7 @@ MESSAGEHANDLER(Scroll)
|
||||
CVector3D origin, dir;
|
||||
float x, y;
|
||||
msg->pos.GetScreenSpace(x, y);
|
||||
g_Game->GetView()->GetCamera()->BuildCameraRay(x, y, origin, dir);
|
||||
g_Game->GetView()->GetCamera()->BuildCameraRay((int)x, (int)y, origin, dir);
|
||||
dir *= targetDistance;
|
||||
camera.Translate(targetPos - dir - origin);
|
||||
g_Game->GetView()->GetCamera()->UpdateFrustum();
|
||||
|
@ -115,7 +115,7 @@ BEGIN_COMMAND(AlterElevation)
|
||||
// TODO: proper variable raise amount (store floats in terrain delta array?)
|
||||
float b = g_CurrentBrush.Get(dx, dy);
|
||||
if (b)
|
||||
m_TerrainDelta.RaiseVertex(x0+dx, y0+dy, amount*b);
|
||||
m_TerrainDelta.RaiseVertex(x0+dx, y0+dy, (int)(amount*b));
|
||||
}
|
||||
|
||||
g_Game->GetWorld()->GetTerrain()->MakeDirty(x0, y0, x0+g_CurrentBrush.m_W, y0+g_CurrentBrush.m_H, RENDERDATA_UPDATE_VERTICES);
|
||||
|
@ -316,7 +316,7 @@ QUERYHANDLER(SelectObject)
|
||||
msg->pos.GetScreenSpace(x, y);
|
||||
|
||||
CVector3D rayorigin, raydir;
|
||||
g_Game->GetView()->GetCamera()->BuildCameraRay(x, y, rayorigin, raydir);
|
||||
g_Game->GetView()->GetCamera()->BuildCameraRay((int)x, (int)y, rayorigin, raydir);
|
||||
|
||||
CUnit* target = g_UnitMan.PickUnit(rayorigin, raydir);
|
||||
|
||||
|
132
source/tools/dds/DDS.pm
Normal file
132
source/tools/dds/DDS.pm
Normal file
@ -0,0 +1,132 @@
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
package DDS;
|
||||
|
||||
sub new
|
||||
{
|
||||
my $proto = shift;
|
||||
my $class = ref($proto) || $proto;
|
||||
|
||||
my $fh;
|
||||
if (ref $_[0])
|
||||
{
|
||||
$fh = $_[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
open $fh, '<', $_[0] or die "Cannot open $_[0]";
|
||||
binmode $fh;
|
||||
}
|
||||
|
||||
my %dds;
|
||||
$dds{dwMagic} = pack L => read_DWORD($fh);
|
||||
for (qw(Size Flags Height Width PitchOrLinearSize Depth MipMapCount))
|
||||
{
|
||||
$dds{"dw$_"} = read_DWORD($fh);
|
||||
}
|
||||
read_DWORD($fh) for 1..11; # dwReserved1
|
||||
|
||||
$dds{dwFlags} = expand_flags($dds{dwFlags}, 'sd');
|
||||
|
||||
$dds{ddpfPixelFormat} = read_DDPIXELFORMAT($fh);
|
||||
$dds{ddsCaps} = read_DDCAPS2($fh);
|
||||
|
||||
read_DWORD($fh);# dwReserved2
|
||||
|
||||
bless \%dds, $class;
|
||||
}
|
||||
|
||||
sub getType
|
||||
{
|
||||
my ($self) = @_;
|
||||
if (grep $_ eq 'DDPF_RGB', @{$self->{ddpfPixelFormat}{dwFlags}})
|
||||
{
|
||||
return pack N => (
|
||||
((unpack L => 'RRRR') & $self->{ddpfPixelFormat}{dwRBitMask}) |
|
||||
((unpack L => 'GGGG') & $self->{ddpfPixelFormat}{dwGBitMask}) |
|
||||
((unpack L => 'BBBB') & $self->{ddpfPixelFormat}{dwBBitMask}) |
|
||||
((unpack L => 'AAAA') & $self->{ddpfPixelFormat}{dwRGBAlphaBitMask})
|
||||
);
|
||||
}
|
||||
elsif (grep $_ eq 'DDPF_FOURCC', @{$self->{ddpfPixelFormat}{dwFlags}})
|
||||
{
|
||||
return $self->{ddpfPixelFormat}{dwFourCC}
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Unknown type";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub read_DWORD
|
||||
{
|
||||
die "Failed to read DWORD" unless (read $_[0], my $b, 4) == 4;
|
||||
return unpack L => $b;
|
||||
}
|
||||
|
||||
sub read_DDPIXELFORMAT
|
||||
{
|
||||
my $r = { map +("dw$_" => read_DWORD($_[0])),
|
||||
qw(Size Flags FourCC RGBBitCount RBitMask GBitMask BBitMask RGBAlphaBitMask) };
|
||||
|
||||
$r->{dwFourCC} = pack L => $r->{dwFourCC};
|
||||
$r->{dwFlags} = expand_flags($r->{dwFlags}, 'pf');
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
sub read_DDCAPS2
|
||||
{
|
||||
my $r = { map +("dw$_" => read_DWORD($_[0])),
|
||||
qw(Caps1 Caps2) };
|
||||
|
||||
$r->{dwCaps1} = expand_flags($r->{dwCaps1}, 'cap1');
|
||||
$r->{dwCaps2} = expand_flags($r->{dwCaps2}, 'cap2');
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
my %flag_names = (
|
||||
sd => {
|
||||
DDSD_CAPS => 0x00000001,
|
||||
DDSD_HEIGHT => 0x00000002,
|
||||
DDSD_WIDTH => 0x00000004,
|
||||
DDSD_PITCH => 0x00000008,
|
||||
DDSD_PIXELFORMAT => 0x00001000,
|
||||
DDSD_MIPMAPCOUNT => 0x00020000,
|
||||
DDSD_LINEARSIZE => 0x00080000,
|
||||
DDSD_DEPTH => 0x00800000,
|
||||
},
|
||||
pf => {
|
||||
DDPF_ALPHAPIXELS => 0x00000001,
|
||||
DDPF_FOURCC => 0x00000004,
|
||||
DDPF_RGB => 0x00000040,
|
||||
},
|
||||
cap1 => {
|
||||
DDSCAPS_COMPLEX => 0x00000008,
|
||||
DDSCAPS_TEXTURE => 0x00001000,
|
||||
DDSCAPS_MIPMAP => 0x00400000,
|
||||
},
|
||||
cap2 => {
|
||||
DDSCAPS2_CUBEMAP => 0x00000200,
|
||||
DDSCAPS2_CUBEMAP_POSITIVEX => 0x00000400,
|
||||
DDSCAPS2_CUBEMAP_NEGATIVEX => 0x00000800,
|
||||
DDSCAPS2_CUBEMAP_POSITIVEY => 0x00001000,
|
||||
DDSCAPS2_CUBEMAP_NEGATIVEY => 0x00002000,
|
||||
DDSCAPS2_CUBEMAP_POSITIVEZ => 0x00004000,
|
||||
DDSCAPS2_CUBEMAP_NEGATIVEZ => 0x00008000,
|
||||
DDSCAPS2_VOLUME => 0x00200000,
|
||||
},
|
||||
);
|
||||
|
||||
sub expand_flags
|
||||
{
|
||||
my ($n, $name) = @_;
|
||||
return [ grep $flag_names{$name}{$_} & $n, keys %{$flag_names{$name}} ];
|
||||
}
|
||||
|
||||
1;
|
47
source/tools/dds/dds_analyse.pl
Normal file
47
source/tools/dds/dds_analyse.pl
Normal file
@ -0,0 +1,47 @@
|
||||
use DDS;
|
||||
use Data::Dumper;
|
||||
use File::Find;
|
||||
|
||||
my @dds;
|
||||
find({
|
||||
wanted => sub {
|
||||
if (/(\.svn|CVS)$/)
|
||||
{
|
||||
$File::Find::prune = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
push @dds, $File::Find::name if /\.dds$/;
|
||||
}
|
||||
},
|
||||
no_chdir => 1,
|
||||
}, "../../../binaries/data/mods/official/art/textures/");
|
||||
|
||||
|
||||
=pod
|
||||
for my $f (@dds)
|
||||
{
|
||||
my $dds = new DDS($f);
|
||||
print "$f\t", $dds->getType(), "\n";
|
||||
}
|
||||
=cut
|
||||
|
||||
#=pod
|
||||
my @c;
|
||||
for my $f (@dds)
|
||||
{
|
||||
my $dds = new DDS($f);
|
||||
if ($dds->getType() eq 'ARGB')
|
||||
{
|
||||
$f =~ /(.*).dds/ or die;
|
||||
push @c, $1;
|
||||
}
|
||||
}
|
||||
print "textureconv -tga ".(join ' ', map "$_.dds", @c)."\n";
|
||||
print "textureconv -abgr ".(join ' ', map "$_.tga", @c)."\n";
|
||||
=cut
|
||||
|
||||
=pod
|
||||
my $dds = new DDS("../../../binaries/data/mods/official/art/textures/ui/session/status_pane.dds");
|
||||
print Dumper $dds;
|
||||
=cut
|
@ -33,7 +33,7 @@
|
||||
|
||||
const TCHAR* msgbox_title = _T("Wildfire Games - Texture Converter");
|
||||
|
||||
enum OutputFileFormat { DXTn, DXT1, DXT3, DXT5, BMP, TGA, BEST };
|
||||
enum OutputFileFormat { DXTn, DXT1, DXT3, DXT5, ABGR, BMP, TGA, BEST };
|
||||
enum trool { tr_false, tr_true, tr_maybe };
|
||||
struct ConversionSettings
|
||||
{
|
||||
@ -132,6 +132,8 @@ void process_args(int argc, TCHAR** argv)
|
||||
settings.top().fmt = DXT3;
|
||||
CASE("-dxt5")
|
||||
settings.top().fmt = DXT5;
|
||||
CASE("-abgr")
|
||||
settings.top().fmt = ABGR;
|
||||
CASE("-bmp")
|
||||
settings.top().fmt = BMP;
|
||||
CASE("-tga")
|
||||
@ -183,6 +185,7 @@ void convert(std::tstring filename, ConversionSettings& settings)
|
||||
case DXT1:
|
||||
case DXT3:
|
||||
case DXT5:
|
||||
case ABGR:
|
||||
extn = _T(".dds");
|
||||
break;
|
||||
case BMP:
|
||||
@ -325,6 +328,9 @@ void convert(std::tstring filename, ConversionSettings& settings)
|
||||
case DXT5:
|
||||
ilSetInteger(IL_DXTC_FORMAT, IL_DXT5);
|
||||
break;
|
||||
case ABGR:
|
||||
ilSetInteger(IL_DXTC_FORMAT, IL_DXT_NO_COMP);
|
||||
break;
|
||||
}
|
||||
|
||||
if (settings.mipmaps)
|
||||
|
@ -23,14 +23,14 @@ Global
|
||||
{FFB317CC-4B72-4CA5-9CB8-86A8A0E8382E}.Debug.Build.0 = Debug|Win32
|
||||
{FFB317CC-4B72-4CA5-9CB8-86A8A0E8382E}.Release.ActiveCfg = Release|Win32
|
||||
{FFB317CC-4B72-4CA5-9CB8-86A8A0E8382E}.Release.Build.0 = Release|Win32
|
||||
{76BBC723-9716-451F-92D9-A7B65F3BA85F}.Debug.ActiveCfg = Debug|Win32
|
||||
{76BBC723-9716-451F-92D9-A7B65F3BA85F}.Debug.Build.0 = Debug|Win32
|
||||
{76BBC723-9716-451F-92D9-A7B65F3BA85F}.Release.ActiveCfg = Release|Win32
|
||||
{76BBC723-9716-451F-92D9-A7B65F3BA85F}.Release.Build.0 = Release|Win32
|
||||
{984C31F1-11EB-4D44-ACF4-B3F573E1F08E}.Debug.ActiveCfg = Debug|Win32
|
||||
{984C31F1-11EB-4D44-ACF4-B3F573E1F08E}.Debug.Build.0 = Debug|Win32
|
||||
{984C31F1-11EB-4D44-ACF4-B3F573E1F08E}.Release.ActiveCfg = Release|Win32
|
||||
{984C31F1-11EB-4D44-ACF4-B3F573E1F08E}.Release.Build.0 = Release|Win32
|
||||
{76BBC723-9716-451F-92D9-A7B65F3BA85F}.Debug.ActiveCfg = Debug Unicode|Win32
|
||||
{76BBC723-9716-451F-92D9-A7B65F3BA85F}.Debug.Build.0 = Debug Unicode|Win32
|
||||
{76BBC723-9716-451F-92D9-A7B65F3BA85F}.Release.ActiveCfg = Release Unicode|Win32
|
||||
{76BBC723-9716-451F-92D9-A7B65F3BA85F}.Release.Build.0 = Release Unicode|Win32
|
||||
{984C31F1-11EB-4D44-ACF4-B3F573E1F08E}.Debug.ActiveCfg = Debug Unicode|Win32
|
||||
{984C31F1-11EB-4D44-ACF4-B3F573E1F08E}.Debug.Build.0 = Debug Unicode|Win32
|
||||
{984C31F1-11EB-4D44-ACF4-B3F573E1F08E}.Release.ActiveCfg = Release Unicode|Win32
|
||||
{984C31F1-11EB-4D44-ACF4-B3F573E1F08E}.Release.Build.0 = Release Unicode|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
|
@ -4,6 +4,7 @@
|
||||
Version="7.10"
|
||||
Name="textureconv"
|
||||
ProjectGUID="{FFB317CC-4B72-4CA5-9CB8-86A8A0E8382E}"
|
||||
RootNamespace="textureconv"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
@ -19,7 +20,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\libraries\devil\src\include"
|
||||
AdditionalIncludeDirectories="..\..\..\libraries\devil\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
@ -35,7 +36,7 @@
|
||||
AdditionalDependencies="DevIL_DBG.lib DevILU_DBG.lib"
|
||||
OutputFile="$(OutDir)/textureconv.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories=""..\..\..\libraries\devil\src\lib""
|
||||
AdditionalLibraryDirectories=""..\..\..\libraries\devil\lib""
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/textureconv.pdb"
|
||||
SubSystem="0"
|
||||
@ -71,7 +72,7 @@
|
||||
WholeProgramOptimization="FALSE">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\libraries\devil\src\include"
|
||||
AdditionalIncludeDirectories="..\..\..\libraries\devil\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
@ -85,7 +86,7 @@
|
||||
AdditionalDependencies="DevIL.lib DevILU.lib"
|
||||
OutputFile="$(OutDir)/textureconv.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories=""..\..\..\libraries\devil\src\lib";"e:\icc81\compiler80\ia32\lib""
|
||||
AdditionalLibraryDirectories=""..\..\..\libraries\devil\lib""
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
|
Loading…
Reference in New Issue
Block a user