本文整理汇总了C++中Material函数的典型用法代码示例。如果您正苦于以下问题:C++ Material函数的具体用法?C++ Material怎么用?C++ Material使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Material函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: while
Material Material::cloneMe()
{
String name = mMaterial->getName();
unsigned int i = 0;
Ogre::MaterialPtr ptr = Ogre::MaterialManager::getSingletonPtr()->getByName(name+StringUtils::toString(i));
while(ptr.getPointer())
{
++i;// keep going until we get a unique name
ptr = Ogre::MaterialManager::getSingletonPtr()->getByName(name+StringUtils::toString(i));
}
Ogre::MaterialPtr newptr = mMaterial->clone(name+StringUtils::toString(i));
return Material(newptr.getPointer());
}
开发者ID:RileyA,项目名称:LD18_Fratricide,代码行数:16,代码来源:Material.cpp
示例2: TEXT
SoftBody::Material * SoftBody::PushMaterial()
{
PhysicsFn->SelectMemory( TEXT("SoftBodies") );
Material * pMaterial = New Material();
PhysicsFn->UnSelectMemory();
pMaterial->fLinearStiffness = 0.0f;
pMaterial->fAngularStiffness = 0.0f;
pMaterial->fAreaStiffness = 0.0f;
pMaterial->fVolumeStiffness = 0.0f;
pMaterial->dwFlags = 0;
m_arrMaterials.Push( pMaterial );
return pMaterial;
}
开发者ID:Shikifuyin,项目名称:Scarab-Engine,代码行数:16,代码来源:SoftBody.cpp
示例3: Material
Material AasRenderer::CreateGeometryShadowMaterial(gfx::RenderingDevice &device)
{
BlendState blendState;
blendState.blendEnable = true;
blendState.srcBlend = D3DBLEND_SRCALPHA;
blendState.destBlend = D3DBLEND_INVSRCALPHA;
RasterizerState rasterizerState;
rasterizerState.cullMode = D3DCULL_NONE;
DepthStencilState depthStencilState;
depthStencilState.depthWrite = false;
auto vs{ device.GetShaders().LoadVertexShader("shadow_geom_vs") };
auto ps{ device.GetShaders().LoadPixelShader("diffuse_only_ps") };
return Material(blendState, depthStencilState, rasterizerState, {}, vs, ps);
}
开发者ID:pakoito,项目名称:TemplePlus,代码行数:16,代码来源:aasrenderer.cpp
示例4: REQUIRE_PARSE_SUCCESS
ParserResult MaterialSymbol::ParseLine(const std::vector<std::string>& aParameters, Scene& aOutput){
if(aParameters.size() != 6){
return kParseMalformedLine;
}
double se, diffuse, specular, shininess, reflectivity;
REQUIRE_PARSE_SUCCESS(Misc::GetDouble(aParameters[1], &se));
REQUIRE_PARSE_SUCCESS(Misc::GetDouble(aParameters[2], &diffuse));
REQUIRE_PARSE_SUCCESS(Misc::GetDouble(aParameters[3], &specular));
REQUIRE_PARSE_SUCCESS(Misc::GetDouble(aParameters[4], &shininess));
REQUIRE_PARSE_SUCCESS(Misc::GetDouble(aParameters[5], &reflectivity));
aOutput.mMaterials.push_back(Material(se, diffuse, specular, shininess, reflectivity));
return kParseSuccess;
}
开发者ID:davidsami,项目名称:RayRay,代码行数:16,代码来源:ParserSymbols.cpp
示例5: readColor
Material SceneSettingReader::readMaterial()
{
settings_.beginGroup("material");
settings_.beginGroup("diffuse");
const Color diffuse = readColor();
settings_.endGroup();
settings_.beginGroup("specular");
const Color specular = readColor();
settings_.endGroup();
settings_.beginGroup("ambient");
const Color ambient = readColor();
settings_.endGroup();
const double shininess = settings_.value("shininess").toDouble();
settings_.endGroup();
return Material(specular, diffuse, ambient, shininess);
}
开发者ID:JordanHeinrichs,项目名称:RayTracer,代码行数:16,代码来源:SceneSettingReader.cpp
示例6: setGame
void MainMenu::init(Game* game)
{
// Important to set the game for changeState() to work!
setGame(game);
// Create the menu.
mMenu = new Menu("MainMenu", NavigationType::MOUSE, HOR);
mMenu->setSize(880, 700, 256, 512);
mMenu->addMenuItem(new MenuItem("SelectLevel", "data/imgs/buttons/play_standard.png", "data/imgs/buttons/play_glow.png"));
mMenu->addMenuItem(new MenuItem("About", "data/imgs/buttons/about_standard.png", "data/imgs/buttons/about_glow.png"));
mMenu->addMenuItem(new MenuItem("Quit", "data/imgs/buttons/quit_standard.png", "data/imgs/buttons/quit_glow.png"));
mMenu->buildMenu(116*1.5, 50*1.5);
mMenu->connect(&MainMenu::menuMessage, this);
// Side menu.
mAboutMenu = new Menu("SideMenu", NavigationType::MOUSE, HOR);
mAboutMenu->setSize(1000, 700, 256, 512);
MenuItem* item = new MenuItem("Back", "data/imgs/buttons/back_standard.png", "data/imgs/buttons/back_glow.png");
mAboutMenu->addMenuItem(item);
mAboutMenu->buildMenu(116*1.5, 50*1.5);
mAboutMenu->connect(&MainMenu::menuMessage, this);
// Create the world.
mWorld = new World();
mLight = new Light(D3DXVECTOR3(0, 25, 0), D3DXVECTOR3(0, -1, 0), Material(WHITE, 0), 32, 1600.0f);
mWorld->addLight(mLight);
mWorld->addAmbientLight(D3DCOLOR_ARGB(200, 100, 100, 100));
mLogo = gGraphics->loadTexture("data/imgs/logo.png");
mAboutTexture = gGraphics->loadTexture("data/imgs/about.png");
// Set the graphics light list.
gGraphics->setLightList(mWorld->getLights());
// Setup the camera.
gCamera->setPosition(D3DXVECTOR3(0, 5000, 0));
gCamera->setDirection(D3DXVECTOR3(0, -0.6, 0.4));
ShowCursor(true);
gSound->muteMusic(false);
gSound->playMusic("data/sound/menu_loop.wav", true, 0);
gSound->setVolume(0.15f);
mShowingAbout = false;
}
开发者ID:simplerr,项目名称:Project-Invasion,代码行数:46,代码来源:MainMenu.cpp
示例7: GraphicsInit
bool GraphicsInit()
{
graphicsEngine = new Renderer();
customScene = new CustomScene("MeshScene", graphicsEngine);
// Set the lights
globalLight = new Light(Material(MaterialWhite), glm::vec4(0.00001, 2.0, 25.0, 1.0));
customScene->addLight(globalLight);
// Camera's are added in the CustomScene's constructor
customModel = new CustomModel( customScene, NULL, None );
customScene->addModel(customModel);
graphicsEngine->initializeScenes();
graphicsEngine->initializeScenes();
return true;
}
开发者ID:Michael-Lfx,项目名称:OpenGL-ES-3.0-Cookbook,代码行数:17,代码来源:NativeTemplate.cpp
示例8: QOpenGLShaderProgram
//===================================================================
Mesh::Mesh(const Mesh &mesh)
{
// copy ctor
mShaderProgram = new QOpenGLShaderProgram(this);
mDebugView = mesh.mDebugView;
mIndexBuffer = QOpenGLBuffer(mesh.mIndexBuffer);
mMode = mesh.mMode;
mTextureImage = mesh.mTextureImage;
setTextureImage(mTextureImage);
for (int index = 0; index < mesh.mVertices.count(); index++)
mVertices.append(mesh.vertices().at(index)) ;
addMaterial(Material());
mOpacity = mesh.mOpacity;
}
开发者ID:dridk,项目名称:cutegl,代码行数:18,代码来源:mesh.cpp
示例9: Vector3f
//----------------------------------------------------------------------------------------------
DebugMultiPoly::DebugMultiPoly()
{
m_origin = Vector3f();
m_firstColor = Color4f();
m_timeToLiveSeconds = 0.f;
m_killNextFrame = false;
m_shouldBeRemoved = false;
m_hasTexture = false;
m_material = Material();
m_material.m_useVBO = true;
//m_VBOOffset = 0;
genVBO();
//Texture* currTex = new Texture(".\\Data\\cobblestonesDiffuse.png");
//m_material.m_useVBO = true;
//m_material.m_useDiffuse = true;
//m_material.m_useShaderProgram=true;
////currMat-._useShaderProgram = true;
//m_material.m_diffuseID = currTex->m_openGLTextureID;
}
开发者ID:Grindl,项目名称:SD6A2,代码行数:20,代码来源:DebugMultiPoly.cpp
示例10: Id
void TPZBndCond::Clone(std::map<int, TPZAutoPointer<TPZMaterial> > &matvec) {
int matid = Id();
TPZAutoPointer<TPZMaterial> refmaterial = Material();
TPZAutoPointer<TPZMaterial> newrefmaterial;
int refmatid = 0;
if(refmaterial) {
refmaterial->Clone(matvec);
refmatid = refmaterial->Id();
newrefmaterial = matvec[refmatid];
}
std::map<int, TPZAutoPointer<TPZMaterial> >::iterator matit;
matit = matvec.find(matid);
if(matit == matvec.end())
{
TPZAutoPointer<TPZMaterial> newmat = TPZAutoPointer<TPZMaterial>(new TPZBndCond(*this, newrefmaterial));
matvec[matid] = newmat;
}
}
开发者ID:JoaoFelipe,项目名称:oceano,代码行数:19,代码来源:pzbndcond.cpp
示例11: HR
void Graphics::drawTest(ID3DXMesh* mesh, IDirect3DTexture9* texture, D3DXVECTOR3 position, D3DXVECTOR3 rotation)
{
HR(mFX->SetTechnique(mhTexTech));
D3DXMATRIX M;
float rotY = atan2f(rotation.x, rotation.z);
D3DXMatrixRotationY(&M, rotY);
setEffectData(texture, position, Dimensions(500), Material(), 0, M, true);
HR(mFX->Begin(0, 0));
HR(mFX->BeginPass(0));
mesh->DrawSubset(0);
HR(mFX->EndPass());
HR(mFX->End());
}
开发者ID:simplerr,项目名称:Project-Invasion,代码行数:19,代码来源:Graphics.cpp
示例12: FindPosInMat
global func FindPosInMat(string sMat, int iXStart, int iYStart, int iWidth, int iHeight, int iSize)
{
var iX, iY;
var iMaterial = Material(sMat);
for(var i = 0; i < 500; i++)
{
iX = AbsX(iXStart+Random(iWidth));
iY = AbsY(iYStart+Random(iHeight));
if(GetMaterial(iX,iY)==iMaterial &&
GetMaterial(iX+iSize,iY+iSize)==iMaterial &&
GetMaterial(iX+iSize,iY-iSize)==iMaterial &&
GetMaterial(iX-iSize,iY-iSize)==iMaterial &&
GetMaterial(iX-iSize,iY+iSize)==iMaterial
) {
return [iX, iY]; // Location found.
}
}
return 0; // No location found.
}
开发者ID:ckanibal,项目名称:openclonk,代码行数:19,代码来源:Material.c
示例13: GraphicsInit
bool GraphicsInit()
{
graphicsEngine = new Renderer();
scene1 = new Scene("MeshScene", graphicsEngine);
scene1->addLight(new Light(Material(MaterialWhite),glm::vec4(0.0, 0.0, 10.0, 1.0)));
// Base
Base = new ObjLoader ( scene1, NULL, CUBE, None );
Base->SetMaterial(Material(MaterialSilver));
Base->SetName(std::string("Base"));
Base->ScaleLocal(1.5, 0.25, 1.5);
// Stand
Stand = new ObjLoader ( scene1, Base, SEMI_HOLLOW_CYLINDER, None );
Stand->SetMaterial(Material(MaterialSilver));
Stand->SetName(std::string("Stand"));
Stand->Translate(0.0, 4.0, 0.0);
Stand->ScaleLocal(0.5, 4.0, 0.5);
// Motor Shaft
MotorShaft = new ObjLoader ( scene1, Stand, CUBE, None );
MotorShaft->SetMaterial(Material(MaterialSilver));
MotorShaft->SetName(std::string("MotorShaft"));
MotorShaft->Translate(0.0, 4.0, 1.0);
MotorShaft->ScaleLocal(0.5, 0.5, 2.0);
// Motor Engine
Sphere = new ObjLoader ( scene1, MotorShaft, SPHERE, None );
Sphere->SetMaterial(Material(MaterialGold));
Sphere->Translate(0.0, 0.0, 2.0);
Sphere->SetName(std::string("Sphere"));
// Fan Blades
for(int i=0; i<360; i+=360/18){
CubePlane = new ObjLoader ( scene1, Sphere, CUBE, None );
CubePlane->SetMaterial(Material(MaterialCopper));
CubePlane->SetName(std::string("FanBlade"));
CubePlane->Translate(0.0, 2.0, 0.0);
CubePlane->SetCenter(glm::vec3(0.0, -2.0, 0.0));
CubePlane->ScaleLocal(0.20, 2.0, 0.20);
CubePlane->Rotate(i, 0.0, 0.0, 1.0);
}
scene1->addModel( Base);
graphicsEngine->initializeScenes();
// Sphere->SetVisible(!true, true);
// Sphere->SetVisible(true, !true);
Base->Rotate(45.0, 0.0, 1.0, 0.0);
// Sphere->SetVisible(true, true);
return true;
}
开发者ID:Michael-Lfx,项目名称:OpenGL-ES-3.0-Cookbook,代码行数:50,代码来源:NativeTemplate.cpp
示例14: TEXT
UMaterial* UGTCaptureComponent::GetMaterial(FString InModeName = TEXT(""))
{
// Load material for visualization
static TMap<FString, FString>* MaterialPathMap = nullptr;
if (MaterialPathMap == nullptr)
{
MaterialPathMap = new TMap<FString, FString>();
MaterialPathMap->Add(TEXT("depth"), TEXT("Material'/UnrealCV/SceneDepthWorldUnits.SceneDepthWorldUnits'"));
MaterialPathMap->Add(TEXT("plane_depth"), TEXT("Material'/UnrealCV/ScenePlaneDepthWorldUnits.ScenePlaneDepthWorldUnits'"));
MaterialPathMap->Add(TEXT("vis_depth"), TEXT("Material'/UnrealCV/SceneDepth.SceneDepth'"));
MaterialPathMap->Add(TEXT("debug"), TEXT("Material'/UnrealCV/debug.debug'"));
// MaterialPathMap->Add(TEXT("object_mask"), TEXT("Material'/UnrealCV/VertexColorMaterial.VertexColorMaterial'"));
MaterialPathMap->Add(TEXT("normal"), TEXT("Material'/UnrealCV/WorldNormal.WorldNormal'"));
FString OpaqueMaterialName = "Material'/UnrealCV/OpaqueMaterial.OpaqueMaterial'";
MaterialPathMap->Add(TEXT("opaque"), OpaqueMaterialName);
}
static TMap<FString, UMaterial*>* StaticMaterialMap = nullptr;
if (StaticMaterialMap == nullptr)
{
StaticMaterialMap = new TMap<FString, UMaterial*>();
for (auto& Elem : *MaterialPathMap)
{
FString ModeName = Elem.Key;
FString MaterialPath = Elem.Value;
ConstructorHelpers::FObjectFinder<UMaterial> Material(*MaterialPath); // ConsturctorHelpers is only available for UObject.
if (Material.Object != NULL)
{
StaticMaterialMap->Add(ModeName, (UMaterial*)Material.Object);
}
}
}
UMaterial* Material = StaticMaterialMap->FindRef(InModeName);
if (Material == nullptr)
{
UE_LOG(LogUnrealCV, Warning, TEXT("Can not recognize visualization mode %s"), *InModeName);
}
return Material;
}
开发者ID:Batname,项目名称:unrealcv,代码行数:42,代码来源:GTCaptureComponent.cpp
示例15: draw_template_
LeafSystem::LeafSystem(const Mesh& mesh, TextureType texture_type, const glm::vec3& origin, int numParticles) :
draw_template_({
ShaderType::DEFERRED,
mesh,
Material(),
Texture(texture_type, DIFFUSE_TEXTURE),
boost::none,
EffectSet({EffectType::CASTS_SHADOW, EffectType::CASTS_REFLECTION})
}),
origin_(origin),
scale_(0.7f),
velocity_(glm::vec3(0.0f, -0.00001f, 0.0f)),
acceleration_(glm::vec3(0.0f, -0.000001f, 0.0f)) {
for (int i = 0; i < numParticles; i++) {
glm::vec3 randVec = getRandomVec();
float randAngle = static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / ROT_MAX));
particles_.push_back(Particle(glm::vec3(origin_.x + randVec.x, origin_.y + randVec.y, origin_.z + randVec.z),
scale_, randAngle, velocity_, acceleration_));
}
}
开发者ID:Ethanmn,项目名称:CPE476Final,代码行数:20,代码来源:leaf_system.cpp
示例16: AddFloorYZ_xUp
TestScene::TestScene()
{
auto tex = -1;// ImageHandler::GetInstance().LoadFromFile("input_data/chino.jpg", true);
//AddObject(new Sphere(1e5, Vector3(1e5 + 1, 40.8, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.25, 0.25), 0.0, tex)), true, false); // 左
AddFloorYZ_xUp(200, 200, Vector3(1, 40.8, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.25, 0.25), 0.0)); // 左
//AddObject(new Sphere(1e5, Vector3(-1e5 + 99, 40.8, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.25, 0.25, 0.75), tex)), true, false); // 右
AddFloorYZ_xDown(200, 200, Vector3(99, 40.8, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.25, 0.25, 0.75), 0.0)); // 右
//AddObject(new Sphere(1e5, Vector3(50, 40.8, 1e5), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75))), true, false); // 奥
AddFloorXY_zUp(150, 150/1.77777777777, Vector3(50, 40.8, 0), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(1, 1, 1), 0.0, tex)); // 奥
//AddObject(new Sphere(1e5, Vector3(50, 40.8, -1e5 + 250), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color())), true, false); // 手前
AddFloorXY_zDown(150, 150 / 1.77777777777, Vector3(50, 40.8, 250), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75), 0.0, tex)); // 手前
//AddObject(new Sphere(1e5, Vector3(50, 1e5, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75))), true, false); // 下
AddFloorXZ_yUp(200, 200, Vector3(50, 0, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75)));
//AddObject(new Sphere(1e5, Vector3(50, -1e5 + 81.6, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75))), true, false); // 上
AddFloorXZ_yDown(200, 200, Vector3(50, 81.6, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75)));
m_ibl.reset(new IBL("input_data/Barce_Rooftop_C_Env.hdr"));
Model *cube = new Model;
//if (!cube->ReadFromObj("input_data/Cargo_ship/OBJ/msmunchen_visualstudio.obj", true)) {
if (!cube->ReadFromObj("input_data/shrine.obj", true)) {
std::cerr << "failed to load cube.obj!!!" << std::endl;
getchar();
exit(-1);
}
//cube->Transform(Vector3(50, 30, 50), Vector3(10, 10, 10), Matrix::RotateAroundVector(Vector3(0, 1, 0), 45.0 / 180 * PI));
//cube->Transform(Vector3(50, 10, 50), Vector3(6, 6, 6), Matrix::RotateAroundVector(Vector3(0, 1, 0), 30.0 / 180 * PI));
//cube->Transform(Vector3(50, 5, 70), Vector3(0.05, 0.05, 0.05), Matrix::RotateAroundVector(Vector3(0, 1, 0), 15.0 / 180 * PI));
cube->Transform(Vector3(27, 16.5, 47), Vector3(2, 2, 2), Matrix::RotateAroundVector(Vector3(0, 1, 0), 0 / 180 * PI));
AddModel(cube, true, true);
//AddObject(new Sphere(10,Vector3(), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.25, 0.75, 0.25)))); // 緑球
//AddObject(new Sphere(16.5,Vector3(27, 16.5, 47), Material(Material::REFLECTION_TYPE_SPECULAR, Color(), Color(0.99, 0.99, 0.99)))); // 鏡
//AddObject(new Sphere(16.5,Vector3(77, 16.5, 78), Material(Material::REFLECTION_TYPE_REFRACTION, Color(), Color(0.99, 0.99, 0.99), REFRACTIVE_INDEX_OBJECT))); // ガラス
//SphereLight *sphereLight = new SphereLight(7.5, Vector3(50.0, 72.5, 61.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(26, 26, 26), Color()));
SphereLight *sphereLight = new SphereLight(15, Vector3(50.0, 90, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(36, 36, 36), Color()));
AddObject(sphereLight, true, false); // 照明
//ConstructBVH();
ConstructQBVH();
}
开发者ID:omochi64,项目名称:omochi-renderer2,代码行数:44,代码来源:TestScene.cpp
示例17: CreateMaterial
int XFileLoader::CreateMaterial(const string& materialName, vec4 diffuse, vec4 specular, const string& textureFilename)
{
if (m_materialLookup.find(materialName) != m_materialLookup.end())
return m_materialLookup[materialName];
int materialIdx = m_materials.size();
m_materials.emplace_back(std::move(Material()));
Material::MaterialData data = { diffuse, specular };
m_materials[materialIdx].setMaterialData(data);
m_materialLookup.insert(make_pair(move(materialName), materialIdx));
if (!textureFilename.empty())
{
string fname(textureFilename.begin(), textureFilename.end());
m_materials[materialIdx].setDiffuseTexture(move(VBGL::Texture2D::loadTexture(fname)));
auto ext = fname.rfind(L'.');
if (ext == fname.npos)
THROW_EXCEPTION_T("Parsing error", ParsingException);
string specName = fname.substr(0, ext) + "_Specular" + fname.substr(ext);
m_materials[materialIdx].setSpecularTexture(move(VBGL::Texture2D::loadTexture(specName)));
}
return materialIdx;
}
开发者ID:kamillys,项目名称:IN_SDL_Demo,代码行数:21,代码来源:mini_xfileLoader.cpp
示例18: assert
int WriterNodeVisitor::processStateSet(osg::StateSet* ss)
{
MaterialMap::const_iterator itr = _materialMap.find(ss);
if (itr != _materialMap.end())
{
assert(itr->second.index>=0);
return itr->second.index;
}
osg::Material* mat = dynamic_cast<osg::Material*>(ss->getAttribute(osg::StateAttribute::MATERIAL));
osg::Texture* tex = dynamic_cast<osg::Texture*>(ss->getTextureAttribute(0, osg::StateAttribute::TEXTURE));
if (mat || tex)
{
int matNum = _lastMaterialIndex;
_materialMap.insert(std::make_pair(osg::ref_ptr<osg::StateSet>(ss), Material(*this, ss, mat, tex, _preserveMaterialNames, matNum) ));
++_lastMaterialIndex;
return matNum;
}
return -1;
}
开发者ID:artoolkit,项目名称:osg,代码行数:21,代码来源:WriterNodeVisitor.cpp
示例19: main
int main() {
// Initiatisation
glm::ivec2 screenSize = glm::ivec2(400, 300);
// -- Camera
Camera cam = Camera(70.f, screenSize, 1);
cam.LookAt(glm::vec3(50,52,295.6), glm::vec3(50,52,295.6) + glm::vec3(0,0.0,-1));
// -- Scene
Scene sc;
// Sphere(1e5, Vec( 1e5+1,40.8,81.6), Vec(),Vec(.75,.25,.25),DIFF),//Left
// Sphere(1e5, Vec(-1e5+99,40.8,81.6),Vec(),Vec(.25,.25,.75),DIFF),//Rght
// Sphere(1e5, Vec(50,40.8, 1e5), Vec(),Vec(.75,.75,.75),DIFF),//Back
// Sphere(1e5, Vec(50,40.8,-1e5+170), Vec(),Vec(), DIFF),//Frnt
// Sphere(1e5, Vec(50, 1e5, 81.6), Vec(),Vec(.75,.75,.75),DIFF),//Botm
// Sphere(1e5, Vec(50,-1e5+81.6,81.6),Vec(),Vec(.75,.75,.75),DIFF),//Top
sc.AddPrimitive(
new Sphere(glm::vec3(1e5 + 1, 40.8, 81.6), 1e5,
Material(glm::vec3(.75, .25, .25))));
sc.AddPrimitive(
new Sphere(glm::vec3(-1e5 + 99, 40.8, 81.6), 1e5,
Material(glm::vec3(.25, .25, .75))));
sc.AddPrimitive(
new Sphere(glm::vec3(50,40.8, 1e5), 1e5,
Material(glm::vec3(.75, .75, .75))));
sc.AddPrimitive(
new Sphere(glm::vec3(50, 40.8, -1e5 + 250), 1e5,
Material(glm::vec3(.75, .75, .75))));
sc.AddPrimitive(
new Sphere(glm::vec3(50, 1e5, 81.6), 1e5,
Material(glm::vec3(.75, .75, .75))));
sc.AddPrimitive(
new Sphere(glm::vec3(50,-1e5+81.6,81.6), 1e5,
Material(glm::vec3(.75, .75, .75))));
sc.AddLight(new PointLight(glm::vec3(50,52,240)));
// -- Screne
Screen screen(screenSize);
// Ray generation
for (int x = 0; x < screenSize.x; x++)
for (int y = 0; y < screenSize.y; y++) {
glm::vec3 colorFinal = sc.ComputeColor(cam.GetRay(x,y));
screen.Store(x, y, colorFinal*100.f);
}
screen.SaveToPGM("out.pgm");
return 0;
}
开发者ID:beltegeuse,项目名称:RayTracing,代码行数:48,代码来源:main.cpp
示例20: Material
const Geometry::Material& MaterialManager::materialAt(const DDSurfaces::Vector3D& pos ){
if( pos != _pos ) {
TGeoNode *node=_tgeoMgr->FindNode( pos[0], pos[1], pos[2] ) ;
if( ! node ) {
std::stringstream err ;
err << " MaterialManager::material: No geometry node found at location: " << pos ;
throw std::runtime_error( err.str() );
}
// std::cout << " @@@ MaterialManager::material @ " << pos << " found volume : " << node->GetName() << std::endl ;
_m = Material( node->GetMedium() ) ;
_pos = pos ;
}
return _m ; ;
}
开发者ID:vvolkl,项目名称:DD4hep,代码行数:21,代码来源:MaterialManager.cpp
注:本文中的Material函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论