r2ximg can convert Risen 2 ._ximg files to .dds files and vice versa. Just drag the image file over the executable symbol to start the conversion.
I recommend using DXT1 compression for non-transparent images, DXT3 compression for transparent images with rather sharp transitions batween transparent and non-transparent areas and DXT5 compression for images with soft transitions. It is advisable only for very few images to not use any compression.
Furthermore, most of the images (except for GUI images) should have mip maps (performance reasons).
[Video tutorial]
Ergebnis 1 bis 16 von 16
-
Geändert von Baltram (09.03.2015 um 09:06 Uhr)
-
Thanks a lot Can't wait to tweak some of the stock textures
3.1415926535
BlogGeändert von Malkav (27.04.2012 um 20:49 Uhr)
-
I kept searching for around an hour but I still can't find that ugly orange circle, which appears throug aiming with a rifle. Did anyone find it yet?
edit: same for the keyboard symbols during the quick time event. I found the symbols for XBOX and PS3 in the GUI folder, and the mouse symbols for computer, but not the keyboard stuff.Geändert von JFaron (28.04.2012 um 12:11 Uhr)
-
3.1415926535
BlogGeändert von Malkav (02.05.2012 um 22:07 Uhr)
-
Gibt es eine Möglichkeit alle Dateien auf eines umzuwandeln, per Batch oder so? Hab versucht, ging aber nicht.
-
-
Perfekt, danke Dir. Leg doch eine fertige CMD gleich bei - ich denke das kann jeder gebrauchen.
-
Hi,
what does your tool write into the 32 bytes of eCImageResource2 class data if you convert a *.dds into a *._ximg? Is there any format documentation you can share?"Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
-
Here is the source code: r2ximg.cpp
The ClassData output is not based on a specific knowledge but on experiments and observations in the original Risen 2 Beta image files. Large parts of the output are experimental (not to say obviously wrong ) and I'll have to rework it as soon as someone experiences problems with the tool which luckily did not happen so far.
Also I wrote this code before knowing about what the hash values stand for, thus it is based on guessing and on your documentation of the Risen 1 ._ximg format.
-
Thanks.
I'll have a look at the compiled headers and will try to make sense out of the block"Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
-
Looking at all headers leaves the impression that the class data can be interpreted as:
Code:uint32_t SkipList[4]; uint16_t AvgAlpha[4]; uint16_t AvgColor[4];
It seems that the SkipMips (unsigned int) property is interpreted as (little-endian)Code:uint8_t Low; uint8_t Medium; uint8_t High; uint8_t Ultra;
Code:<global> <Engine> <Cache> <Image> <Mounts> <_Editor Path="/EditSupporter" NoMip="True" ><Qualities><Low MinWidth="64" NumSkipMips="0"></Low><Medium MinWidth="64" NumSkipMips="0"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_Editor> <_GUI Path="/GUI" NoMip="True" ><Qualities><Low MinWidth="64" NumSkipMips="0"></Low><Medium MinWidth="64" NumSkipMips="0"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_GUI> <_Animation Path="/Animation" NoMip="false"><Qualities><Low MinWidth="64" NumSkipMips="2"></Low><Medium MinWidth="64" NumSkipMips="1"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_Animation> <_Brushes Path="/Level/Brushes" NoMip="False"><Qualities><Low MinWidth="64" NumSkipMips="2"></Low><Medium MinWidth="64" NumSkipMips="1"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_Brushes> <_Decals Path="/Level/Decals" NoMip="False"><Qualities><Low MinWidth="64" NumSkipMips="2"></Low><Medium MinWidth="64" NumSkipMips="1"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_Decals> <_Items Path="/Level/Items" NoMip="False"><Qualities><Low MinWidth="64" NumSkipMips="2"></Low><Medium MinWidth="64" NumSkipMips="1"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_Items> <_Objects Path="/Level/Objects" NoMip="False"><Qualities><Low MinWidth="64" NumSkipMips="2"></Low><Medium MinWidth="64" NumSkipMips="1"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_Objects> <_LoDImg Path="/Level/_LoDImg" NoMip="False"><Qualities><Low MinWidth="64" NumSkipMips="0"></Low><Medium MinWidth="64" NumSkipMips="0"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_LoDImg> <_Terrain Path="/Level/Terrain" NoMip="False"><Qualities><Low MinWidth="64" NumSkipMips="2"></Low><Medium MinWidth="64" NumSkipMips="1"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_Terrain> <_Water Path="/Level/Water" NoMip="False"><Qualities><Low MinWidth="64" NumSkipMips="2"></Low><Medium MinWidth="64" NumSkipMips="1"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_Water> <_Sky Path="/Sky" NoMip="False"><Qualities><Low MinWidth="64" NumSkipMips="2"></Low><Medium MinWidth="64" NumSkipMips="1"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_Sky> <_Special Path="/Special" NoMip="False"><Qualities><Low MinWidth="64" NumSkipMips="2"></Low><Medium MinWidth="64" NumSkipMips="1"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_Special> <_Speedtree Path="/Speedtree" NoMip="False"><Qualities><Low MinWidth="64" NumSkipMips="2"></Low><Medium MinWidth="64" NumSkipMips="1"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_Speedtree> <_VFX Path="/VFX" NoMip="False"><Qualities><Low MinWidth="64" NumSkipMips="1"></Low><Medium MinWidth="64" NumSkipMips="0"></Medium><High MinWidth="64" NumSkipMips="0"></High></Qualities></_VFX> </Mounts> </Image> </Cache> </Engine> </global>
Dump from the image_headers.whdr (swapped PixelFormat and SkipMips to sort the list as intended) attached:"Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- ConnorGeändert von NicoDE (11.05.2012 um 14:01 Uhr)
-
Thank you!
Do you happen to know why there are 4 WORDs each for AvgAlpha and AvgColor? Do you think it is necessary or advisable for performance reasons to compute these values for custom textures?
-
"Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
-
I'm glad to see that there is already something useful for modding Risen 2!
But does r2ximg work with only one file at the time? I'm asking this, because with the converter ._ximg-.dds for the first Risen, you can convert all the files together and it's very convenient.
-
-