mirror of
https://github.com/halpz/re3.git
synced 2025-07-23 04:19:48 +00:00
urgh, merge and changes to RW layer in one commit.
This commit is contained in:
@ -294,32 +294,13 @@ RwTextureAddressMode RwTextureGetAddressingV(const RwTexture *texture);
|
||||
// TODO
|
||||
void _rwD3D8TexDictionaryEnableRasterFormatConversion(bool enable) { }
|
||||
|
||||
static rw::Raster*
|
||||
ConvertTexRaster(rw::Raster *ras)
|
||||
{
|
||||
using namespace rw;
|
||||
|
||||
if(ras->platform == rw::platform)
|
||||
return ras;
|
||||
// compatible platforms
|
||||
if(ras->platform == PLATFORM_D3D8 && rw::platform == PLATFORM_D3D9 ||
|
||||
ras->platform == PLATFORM_D3D9 && rw::platform == PLATFORM_D3D8)
|
||||
return ras;
|
||||
|
||||
Image *img = ras->toImage();
|
||||
ras->destroy();
|
||||
img->unpalettize();
|
||||
ras = Raster::createFromImage(img);
|
||||
img->destroy();
|
||||
return ras;
|
||||
}
|
||||
|
||||
// hack for reading native textures
|
||||
RwBool rwNativeTextureHackRead(RwStream *stream, RwTexture **tex, RwInt32 size)
|
||||
{
|
||||
*tex = Texture::streamReadNative(stream);
|
||||
#ifdef LIBRW
|
||||
(*tex)->raster = ConvertTexRaster((*tex)->raster);
|
||||
(*tex)->raster = rw::Raster::convertTexToCurrentPlatform((*tex)->raster);
|
||||
#endif
|
||||
return *tex != nil;
|
||||
}
|
||||
@ -462,6 +443,53 @@ RwBool RwIm3DRenderPrimitive(RwPrimitiveType primType);
|
||||
|
||||
|
||||
|
||||
RwBool RwRenderStateGet(RwRenderState state, void *value)
|
||||
{
|
||||
uint32 *uival = (uint32*)value;
|
||||
uint32 fog;
|
||||
switch(state){
|
||||
case rwRENDERSTATETEXTURERASTER: *(void**)value = GetRenderStatePtr(TEXTURERASTER); return true;
|
||||
case rwRENDERSTATETEXTUREADDRESS: *uival = GetRenderState(TEXTUREADDRESS); return true;
|
||||
case rwRENDERSTATETEXTUREADDRESSU: *uival = GetRenderState(TEXTUREADDRESSU); return true;
|
||||
case rwRENDERSTATETEXTUREADDRESSV: *uival = GetRenderState(TEXTUREADDRESSV); return true;
|
||||
case rwRENDERSTATETEXTUREPERSPECTIVE: *uival = 1; return true;
|
||||
case rwRENDERSTATEZTESTENABLE: *uival = GetRenderState(ZTESTENABLE); return true;
|
||||
case rwRENDERSTATESHADEMODE: *uival = rwSHADEMODEGOURAUD; return true;
|
||||
case rwRENDERSTATEZWRITEENABLE: *uival = GetRenderState(ZWRITEENABLE); return true;
|
||||
case rwRENDERSTATETEXTUREFILTER: *uival = GetRenderState(TEXTUREFILTER); return true;
|
||||
case rwRENDERSTATESRCBLEND: *uival = GetRenderState(SRCBLEND); return true;
|
||||
case rwRENDERSTATEDESTBLEND: *uival = GetRenderState(DESTBLEND); return true;
|
||||
case rwRENDERSTATEVERTEXALPHAENABLE: *uival = GetRenderState(VERTEXALPHA); return true;
|
||||
case rwRENDERSTATEBORDERCOLOR: *uival = 0; return true;
|
||||
case rwRENDERSTATEFOGENABLE: *uival = GetRenderState(FOGENABLE); return true;
|
||||
case rwRENDERSTATEFOGCOLOR:
|
||||
// have to swap R and B here
|
||||
fog = GetRenderState(FOGCOLOR);
|
||||
*uival = (fog>>16)&0xFF;
|
||||
*uival |= (fog&0xFF)<<16;
|
||||
*uival |= fog&0xFF00;
|
||||
*uival |= fog&0xFF000000;
|
||||
return true;
|
||||
case rwRENDERSTATEFOGTYPE: *uival = rwFOGTYPELINEAR; return true;
|
||||
case rwRENDERSTATEFOGDENSITY: *(float*)value = 1.0f; return true;
|
||||
case rwRENDERSTATECULLMODE: *uival = GetRenderState(CULLMODE); return true;
|
||||
|
||||
// all unsupported
|
||||
case rwRENDERSTATEFOGTABLE:
|
||||
case rwRENDERSTATEALPHAPRIMITIVEBUFFER:
|
||||
|
||||
case rwRENDERSTATESTENCILENABLE:
|
||||
case rwRENDERSTATESTENCILFAIL:
|
||||
case rwRENDERSTATESTENCILZFAIL:
|
||||
case rwRENDERSTATESTENCILPASS:
|
||||
case rwRENDERSTATESTENCILFUNCTION:
|
||||
case rwRENDERSTATESTENCILFUNCTIONREF:
|
||||
case rwRENDERSTATESTENCILFUNCTIONMASK:
|
||||
case rwRENDERSTATESTENCILFUNCTIONWRITEMASK:
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
RwBool RwRenderStateSet(RwRenderState state, void *value)
|
||||
{
|
||||
uint32 uival = (uintptr)value;
|
||||
@ -749,6 +777,9 @@ RwBool RpWorldPluginAttach(void) {
|
||||
registerNativeDataPlugin();
|
||||
registerAtomicRightsPlugin();
|
||||
registerMaterialRightsPlugin();
|
||||
|
||||
// not sure if this goes here
|
||||
rw::xbox::registerVertexFormatPlugin();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user