#include "CPBRLighting.h" #include #include "CGraphicsTexLoadOptions.h" #include "CFTTGraphicsDevice.h" #include "CFTTTexture.h" #include "CMatchSetup.h" #include "CGFXSpec.h" #include "CGfxPitch.h" #include "Matrix.h" #include "memctrl.h" #include "HalfConverter.h" CPBRLighting *CPBRLighting::ms_pInstance; struct UseBy_DiffuseKitFormula { float field_0; float field_4; }; //0018E454 //^_- UseBy_DiffuseKitFormula DiffuseKitFormula(float a2, float a3, float a4, float a5, float a6, float a7, float a8, float y, float a10, float a11, EPlayerShaderQuality a12) { UseBy_DiffuseKitFormula v13; return v13; } //------------------------------------------------------------------------------------------------- //0018C9D4 CPBRLighting::CPBRLighting() { } //------------------------------------------------------------------------------------------------- //0018CC78 CPBRLighting::~CPBRLighting() { } //------------------------------------------------------------------------------------------------- //0018C984 void CPBRLighting::Init() { } //------------------------------------------------------------------------------------------------- //0018C9A4 void CPBRLighting::Shutdown() { } //------------------------------------------------------------------------------------------------- //0018C9C4 CPBRLighting *CPBRLighting::Get() { return (CPBRLighting*)rand(); } //------------------------------------------------------------------------------------------------- //0018CA14 -_- 经过单元测试,功能正常 void CPBRLighting::Initialise(bool a2) { } //------------------------------------------------------------------------------------------------- //0018CCB8 ^_- 部分指令顺序不一样, 部分用的寄存器不一样(单元测试,输出纹理对象内部RGB数据的MD5值一样,必须在开启高端机器上运行才会被调用) void CPBRLighting::CreateVersatileLUT() { } //------------------------------------------------------------------------------------------------- //0018CF08 ^_-指令顺序是不一样的(这个模块测试, 在部分情况下MD5值不一样) void CPBRLighting::CreateSpecularLUT(EPBRLightingMat a2, float a3, float a4, float a5, int a6, int a7, float a8, float a9) { } //------------------------------------------------------------------------------------------------- //0018D1F0 ^_-指令顺序是不一样的(这个模块测试, 输出纹理对象内部RGB数据的MD5值一样,但不确保对象内部其它数据一致) void CPBRLighting::CreateDiffuseLUTSkin() { } //------------------------------------------------------------------------------------------------- //0018D4BC //^_- 单元测试结果: 输出buffer的md5相同 //不同点: 0018D62E处我的汇编少一条指令,其余地方完全相同 void CPBRLighting::CreateDiffuseLUTKit() { } //------------------------------------------------------------------------------------------------- //0018D66C //^_- 单元测试结果: 输出buffer的md5相同 //不同点: 0018D772处我的汇编少一条指令,其余地方完全相同 void CPBRLighting::CreateDiffuseLUTKitAlpha() { } //------------------------------------------------------------------------------------------------- //0018D7AC //^_- 单元测试结果: 输出buffer的md5相同 //不同点: 0018D91E处我的汇编少一条指令,其余地方完全相同 void CPBRLighting::CreateDiffuseLUTSuit() { } //------------------------------------------------------------------------------------------------- //0018D95C //^_- 单元测试结果: 输出buffer的md5相同 //不同点: 0018DACE处我的汇编少一条指令,其余地方完全相同 void CPBRLighting::CreateDiffuseLUTTracksuit() { } //------------------------------------------------------------------------------------------------- //0018DB0C //^_- 单元测试结果: 输出buffer的md5相同 //不同点: 0018DC12处我的汇编少一条指令,其余地方完全相同 void CPBRLighting::CreateDiffuseLUTHair() { } //------------------------------------------------------------------------------------------------- //0018DC4C //^_- 单元测试结果: 输出buffer的md5相同 //不同: 很多地方不同 void CPBRLighting::CreateGrassLUT() { } //------------------------------------------------------------------------------------------------- //0018E154 ^_^ void CPBRLighting::Reinitialise(bool b) { LOGE("%x%x",this,b); } //------------------------------------------------------------------------------------------------- //0018E1AA void CPBRLighting::Prepare() { //emtry } //------------------------------------------------------------------------------------------------- //0018E1AC ^_^ void CPBRLighting::floatToFour(float a1, uchar *a2, float a3) { } //------------------------------------------------------------------------------------------------- //0018E574 void CPBRLighting::CreateDiffuseLUTBall() { //没有调用到 } //------------------------------------------------------------------------------------------------- //0018E684 ^_^ CFTTTexture *CPBRLighting::GetDiffuse(EPBRLightingMat eMat) { LOGE("CPBRLighting::GetDiffuse%p%x",this,eMat); return (CFTTTexture *)rand(); } //------------------------------------------------------------------------------------------------- //0018E68C ^_^ CFTTTexture *CPBRLighting::GetSpecular(EPBRLightingMat eMat) { LOGE("CPBRLighting::GetSpecular%p%x",this,eMat); return (CFTTTexture *)rand(); } //------------------------------------------------------------------------------------------------- //0018E694 ^_^ CFTTTexture *CPBRLighting::GetVersatile() { LOGE("CPBRLighting::GetVersatile%p",this); return (CFTTTexture *)rand(); } //------------------------------------------------------------------------------------------------- //0018E698 ^_^ CFTTTexture *CPBRLighting::GetGrass() { return nullptr; } //------------------------------------------------------------------------------------------------- //0018E69C void CPBRLighting::SpecialFrac(float f) { //没有调用到 } //-------------------------------------------------------------------------------------------------