Exemplo n.º 1
0
END_TEST


START_TEST(test_parse_cpu_string)
  {
  numa_node nn;
  std::string str("0-1,8-9");
  nn.parse_cpu_string(str);
  fail_unless(nn.get_total_cpus() == 4);
  fail_unless(nn.get_available_cpus() == 4);

  std::string str2("0,8");
  numa_node n2;
  n2.parse_cpu_string(str2);
  fail_unless(n2.get_total_cpus() == 2);
  fail_unless(n2.get_available_cpus() == 2);

  numa_node nn2("torque2", 0);
  fail_unless(nn2.get_total_cpus() == 2);
  fail_unless(nn2.get_available_cpus() == 2);

  numa_node nn4("torque4", 0);
  fail_unless(nn4.get_total_cpus() == 4);
  fail_unless(nn4.get_available_cpus() == 4);
  }
Exemplo n.º 2
0
//-------------------------------------------------------------
//- GetMeshPointFromSecondTexCoord
//- Get real vertex position and normal from mesh according to TexCoord1
//-------------------------------------------------------------
bool CSGPModelMF1::GetMeshPointFromSecondTexCoord( Vector3D& position, Vector3D& normal, const Vector2D& uv, const Matrix4x4& modelMatrix  )
{
	for( uint32 i=0; i<m_Header.m_iNumMeshes; i++ )
	{
		if( !m_pLOD0Meshes[i].m_pTexCoords1 || (m_pLOD0Meshes[i].m_iNumUV1==0) )
			continue;

		jassert( m_pLOD0Meshes[i].m_iNumUV0 == m_pLOD0Meshes[i].m_iNumUV1 );


		for( uint32 j=0; j<m_pLOD0Meshes[i].m_iNumIndices; j += 3 )
		{
			Vector3D v0(
				m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j  ]  ].vPos[0],
				m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j  ]  ].vPos[1],
				m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j  ]  ].vPos[2] );
			Vector3D v1(
				m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+1]  ].vPos[0],
				m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+1]  ].vPos[1],
				m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+1]  ].vPos[2] );
			Vector3D v2(
				m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+2]  ].vPos[0],
				m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+2]  ].vPos[1],
				m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+2]  ].vPos[2] );

			v0 = v0 * modelMatrix;
			v1 = v1 * modelMatrix;
			v2 = v2 * modelMatrix;

			Vector2D t0(m_pLOD0Meshes[i].m_pTexCoords1[  m_pLOD0Meshes[i].m_pIndices[j  ]  ].m_fTexCoord[0],
						m_pLOD0Meshes[i].m_pTexCoords1[  m_pLOD0Meshes[i].m_pIndices[j  ]  ].m_fTexCoord[1]	);
			Vector2D t1(m_pLOD0Meshes[i].m_pTexCoords1[  m_pLOD0Meshes[i].m_pIndices[j+1]  ].m_fTexCoord[0],
						m_pLOD0Meshes[i].m_pTexCoords1[  m_pLOD0Meshes[i].m_pIndices[j+1]  ].m_fTexCoord[1]	);
			Vector2D t2(m_pLOD0Meshes[i].m_pTexCoords1[  m_pLOD0Meshes[i].m_pIndices[j+2]  ].m_fTexCoord[0],
						m_pLOD0Meshes[i].m_pTexCoords1[  m_pLOD0Meshes[i].m_pIndices[j+2]  ].m_fTexCoord[1]	);

			Vector3D samplePos = TexcoordToPos( v0, v1, v2, t0, t1, t2, uv );
			if( !IsPointInsideTriangle(v0, v1, v2, samplePos, 0.1f) )
				continue;
			else
			{
				Vector4D n0(
					m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j  ]  ].vNormal[0],
					m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j  ]  ].vNormal[1],
					m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j  ]  ].vNormal[2],
					0);
				Vector4D n1(
					m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+1]  ].vNormal[0],
					m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+1]  ].vNormal[1],
					m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+1]  ].vNormal[2],
					0);
				Vector4D n2(
					m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+2]  ].vNormal[0],
					m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+2]  ].vNormal[1],
					m_pLOD0Meshes[i].m_pVertex[  m_pLOD0Meshes[i].m_pIndices[j+2]  ].vNormal[2],
					0);


				n0 = n0 * modelMatrix;
				n1 = n1 * modelMatrix;
				n2 = n2 * modelMatrix;

				Vector3D nn0(n0.x, n0.y, n0.z);
				Vector3D nn1(n1.x, n1.y, n1.z);
				Vector3D nn2(n2.x, n2.y, n2.z);
				nn0.Normalize();
				nn1.Normalize();
				nn2.Normalize();

				normal = TexcoordToPos( nn0, nn1, nn2, t0, t1, t2, uv );
				normal.Normalize();
				position = samplePos;

				return true;
			}
		}
	}
	return false;
}