Hi dark_sylinc,
I now test Instand Radiocity and have a first version implemented in my engine. But as soon as:
this->instantRadiosity->build();
is called. I get this crash for any Ogre::v1::Entity:
Code: Select all
OgreMain_d.dll!Ogre::v1::HardwareBuffer::isLocked() Zeile 345 C++
OgreMain_d.dll!Ogre::v1::HardwareBuffer::isLocked() Zeile 345 C++
OgreMain_d.dll!Ogre::v1::VertexData::unlockMultipleElements(Ogre::FastArray<Ogre::v1::VertexData::ReadRequests> & requests={...}) Zeile 732 C++
OgreHlmsPbs_d.dll!Ogre::InstantRadiosity::downloadRenderOp(const Ogre::v1::RenderOperation & renderOp={...}) Zeile 996 C++
OgreHlmsPbs_d.dll!Ogre::InstantRadiosity::testLightVsAllObjects(unsigned char lightType='\0', float lightRange=3.40282347e+38, Ogre::ObjectData objData={...}, unsigned __int64 numNodes=64, const Ogre::InstantRadiosity::AreaOfInterest & scalarAreaOfInterest={...}, unsigned __int64 rayStart=0, unsigned __int64 numRays=128) Zeile 1111 C++
OgreHlmsPbs_d.dll!Ogre::InstantRadiosity::processLight(Ogre::Vector3 lightPos={...}, const Ogre::Quaternion & lightRot={...}, unsigned char lightType='\0', Ogre::Radian angle={...}, Ogre::Vector3 lightColour={...}, float lightRange=3.40282347e+38, float attenConst=0.500000000, float attenLinear=0.00000000, float attenQuad=0.00499999989, const Ogre::InstantRadiosity::AreaOfInterest & areaOfInterest={...}) Zeile 671 C++
OgreHlmsPbs_d.dll!Ogre::InstantRadiosity::build() Zeile 1455 C++
InstantRadiosityComponent_d.dll!NOWA::InstantRadiosityComponent::internalBuild() Zeile 904 C++
local variables:
NameWertTyp ▶this0x00000262f5b49a10 {mSceneManager=0x00000262ff0e5a80 {...} mHlmsManager=0x00000262c3a36b70 {mRegisteredHlms=...} ...}Ogre::InstantRadiosity * ▶isHalf0x000000fc3e91cb98 {false, false, true (204), true (204), true (204), true (204), true (204), true (204), ...}bool[9] ▶itorendstd::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<Ogre::v1::RenderOperation const ,Ogre::InstantRadiosity::MeshData>>>> ▶meshData{vertexData=0x00000262c8857520 {4.00017023} indexData=0x00000262f5b666e0 "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍýýýýÝÝÝÝÝÝÝÝÚ\x4\x4\x3¨.'¦" ...}Ogre::InstantRadiosity::MeshData numVertexElements2const unsigned __int64 ▶readRequests{mData=0x0000026293f6fa90 {semantic=VES_POSITION (1) type=VET_FLOAT3 (2) data=0x0000000000000000 <NULL> ...} ...}Ogre::FastArray<Ogre::v1::VertexData::ReadRequests> ▶renderOp{meshIndex=9 vertexData=0x00000262ffcce070 {mMgr=0x00000262c4172060 {...} vertexDeclaration=0x00000262ffdba500 {...} ...} ...}const Ogre::v1::RenderOperation &Crashing here:
Code: Select all
bool isLocked() const
{
return mIsLocked || ( mUseShadowBuffer && mShadowBuffer->isLocked() );
}
-> mShadowBuffer is nullptr
-> And useShadowBuffer = true
I changed also:
Code: Select all
v1Mesh = Ogre::v1::MeshManager::getSingletonPtr()->load(tempMeshFile, Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME, Ogre::v1::HardwareBuffer::HBU_STATIC, Ogre::v1::HardwareBuffer::HBU_STATIC, true, true);
to:
Code: Select all
v1Mesh = Ogre::v1::MeshManager::getSingletonPtr()->load(tempMeshFile, Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME,
Ogre::v1::HardwareBuffer::HBU_STATIC_WRITE_ONLY, Ogre::v1::HardwareBuffer::HBU_STATIC_WRITE_ONLY, true, true);But that did not fix anything.
Some of my entity meshes are created with this serializer:
[MeshSerializer_v2.1 R0 LEGACYV1]
Note: I have in my NOWA-Engine mixed stuff: Ogre::v1::Entity and Animation v1 because of more advanced skeleton and animation features, which i use for Ragdolling. Static meshes, I use as Ogre::Item.
No idea if it helps. But this is one of the meshes.
https://www.lukas-kalinowski.com/Homepa ... ainer.mesh
Best Regards
Lax
