Commit 31d0d857 authored by Jason Swails's avatar Jason Swails
Browse files

Add tests for the new usesPeriodicBoundaryConditions API function to the

Reference platform.
parent 930fb6d6
...@@ -64,6 +64,8 @@ void testCMAPTorsions() { ...@@ -64,6 +64,8 @@ void testCMAPTorsions() {
periodic->addTorsion(0, 1, 2, 3, 2, M_PI/4, 1.5); periodic->addTorsion(0, 1, 2, 3, 2, M_PI/4, 1.5);
periodic->addTorsion(1, 2, 3, 4, 3, M_PI/3, 2.0); periodic->addTorsion(1, 2, 3, 4, 3, M_PI/3, 2.0);
system1.addForce(periodic); system1.addForce(periodic);
ASSERT(!periodic->usesPeriodicBoundaryConditions());
ASSERT(!system1.usesPeriodicBoundaryConditions());
System system2; System system2;
for (int i = 0; i < 5; i++) for (int i = 0; i < 5; i++)
system2.addParticle(1.0); system2.addParticle(1.0);
...@@ -81,6 +83,8 @@ void testCMAPTorsions() { ...@@ -81,6 +83,8 @@ void testCMAPTorsions() {
cmap->addMap(mapSize, mapEnergy); cmap->addMap(mapSize, mapEnergy);
cmap->addTorsion(0, 0, 1, 2, 3, 1, 2, 3, 4); cmap->addTorsion(0, 0, 1, 2, 3, 1, 2, 3, 4);
system2.addForce(cmap); system2.addForce(cmap);
ASSERT(!cmap->usesPeriodicBoundaryConditions());
ASSERT(!system2.usesPeriodicBoundaryConditions());
// Set the atoms in various positions, and verify that both systems give equal forces and energy. // Set the atoms in various positions, and verify that both systems give equal forces and energy.
......
...@@ -71,6 +71,8 @@ void testAngles() { ...@@ -71,6 +71,8 @@ void testAngles() {
parameters[1] = 0.5; parameters[1] = 0.5;
custom->addAngle(1, 2, 3, parameters); custom->addAngle(1, 2, 3, parameters);
customSystem.addForce(custom); customSystem.addForce(custom);
ASSERT(!custom->usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
// Create an identical system using a HarmonicAngleForce. // Create an identical system using a HarmonicAngleForce.
......
...@@ -67,6 +67,8 @@ void testBonds() { ...@@ -67,6 +67,8 @@ void testBonds() {
parameters[1] = 0.7; parameters[1] = 0.7;
forceField->addBond(1, 2, parameters); forceField->addBond(1, 2, parameters);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 2, 0); positions[0] = Vec3(0, 2, 0);
......
...@@ -85,6 +85,8 @@ void testBond() { ...@@ -85,6 +85,8 @@ void testBond() {
parameters[5] = 1.3; parameters[5] = 1.3;
custom->addBond(particles, parameters); custom->addBond(particles, parameters);
customSystem.addForce(custom); customSystem.addForce(custom);
ASSERT(!custom->usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
// Create an identical system using standard forces. // Create an identical system using standard forces.
......
...@@ -67,6 +67,8 @@ void testForce() { ...@@ -67,6 +67,8 @@ void testForce() {
parameters[1] = 3.0; parameters[1] = 3.0;
forceField->addParticle(2, parameters); forceField->addParticle(2, parameters);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 2, 0); positions[0] = Vec3(0, 2, 0);
......
...@@ -135,6 +135,17 @@ void testOBC(GBSAOBCForce::NonbondedMethod obcMethod, CustomGBForce::NonbondedMe ...@@ -135,6 +135,17 @@ void testOBC(GBSAOBCForce::NonbondedMethod obcMethod, CustomGBForce::NonbondedMe
custom->setNonbondedMethod(customMethod); custom->setNonbondedMethod(customMethod);
standardSystem.addForce(obc); standardSystem.addForce(obc);
customSystem.addForce(custom); customSystem.addForce(custom);
if (customMethod == CustomGBForce::CutoffPeriodic) {
ASSERT(custom->usesPeriodicBoundaryConditions());
ASSERT(obc->usesPeriodicBoundaryConditions());
ASSERT(standardSystem.usesPeriodicBoundaryConditions());
ASSERT(customSystem.usesPeriodicBoundaryConditions());
} else {
ASSERT(!custom->usesPeriodicBoundaryConditions());
ASSERT(!obc->usesPeriodicBoundaryConditions());
ASSERT(!standardSystem.usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
}
VerletIntegrator integrator1(0.01); VerletIntegrator integrator1(0.01);
VerletIntegrator integrator2(0.01); VerletIntegrator integrator2(0.01);
Context context1(standardSystem, integrator1, platform); Context context1(standardSystem, integrator1, platform);
......
...@@ -83,6 +83,8 @@ void testHbond() { ...@@ -83,6 +83,8 @@ void testHbond() {
custom->addAcceptor(2, 3, 4, parameters); custom->addAcceptor(2, 3, 4, parameters);
custom->setCutoffDistance(10.0); custom->setCutoffDistance(10.0);
customSystem.addForce(custom); customSystem.addForce(custom);
ASSERT(!custom->usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
// Create an identical system using HarmonicBondForce, HarmonicAngleForce, and PeriodicTorsionForce. // Create an identical system using HarmonicBondForce, HarmonicAngleForce, and PeriodicTorsionForce.
......
...@@ -63,6 +63,13 @@ void validateAxilrodTeller(CustomManyParticleForce* force, const vector<Vec3>& p ...@@ -63,6 +63,13 @@ void validateAxilrodTeller(CustomManyParticleForce* force, const vector<Vec3>& p
system.addParticle(1.0); system.addParticle(1.0);
system.setDefaultPeriodicBoxVectors(Vec3(boxSize, 0, 0), Vec3(0, boxSize, 0), Vec3(0, 0, boxSize)); system.setDefaultPeriodicBoxVectors(Vec3(boxSize, 0, 0), Vec3(0, boxSize, 0), Vec3(0, 0, boxSize));
system.addForce(force); system.addForce(force);
if (force->getNonbondedMethod() == CustomManyParticleForce::CutoffPeriodic) {
ASSERT(force->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
} else {
ASSERT(!force->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
}
VerletIntegrator integrator(0.001); VerletIntegrator integrator(0.001);
ReferencePlatform platform; ReferencePlatform platform;
Context context(system, integrator, platform); Context context(system, integrator, platform);
......
...@@ -184,6 +184,8 @@ void testCutoff() { ...@@ -184,6 +184,8 @@ void testCutoff() {
forceField->setNonbondedMethod(CustomNonbondedForce::CutoffNonPeriodic); forceField->setNonbondedMethod(CustomNonbondedForce::CutoffNonPeriodic);
forceField->setCutoffDistance(2.5); forceField->setCutoffDistance(2.5);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -213,6 +215,8 @@ void testPeriodic() { ...@@ -213,6 +215,8 @@ void testPeriodic() {
forceField->setCutoffDistance(2.0); forceField->setCutoffDistance(2.0);
system.setDefaultPeriodicBoxVectors(Vec3(4, 0, 0), Vec3(0, 4, 0), Vec3(0, 0, 4)); system.setDefaultPeriodicBoxVectors(Vec3(4, 0, 0), Vec3(0, 4, 0), Vec3(0, 0, 4));
system.addForce(forceField); system.addForce(forceField);
ASSERT(forceField->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -531,6 +535,8 @@ void testCoulombLennardJones() { ...@@ -531,6 +535,8 @@ void testCoulombLennardJones() {
customNonbonded->setNonbondedMethod(CustomNonbondedForce::NoCutoff); customNonbonded->setNonbondedMethod(CustomNonbondedForce::NoCutoff);
standardSystem.addForce(standardNonbonded); standardSystem.addForce(standardNonbonded);
customSystem.addForce(customNonbonded); customSystem.addForce(customNonbonded);
ASSERT(!customNonbonded->usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
VerletIntegrator integrator1(0.01); VerletIntegrator integrator1(0.01);
VerletIntegrator integrator2(0.01); VerletIntegrator integrator2(0.01);
Context context1(standardSystem, integrator1, platform); Context context1(standardSystem, integrator1, platform);
......
...@@ -75,6 +75,8 @@ void testTorsions() { ...@@ -75,6 +75,8 @@ void testTorsions() {
parameters[1] = 2; parameters[1] = 2;
custom->addTorsion(1, 2, 3, 4, parameters); custom->addTorsion(1, 2, 3, 4, parameters);
customSystem.addForce(custom); customSystem.addForce(custom);
ASSERT(!custom->usesPeriodicBoundaryConditions());
ASSERT(!customSystem.usesPeriodicBoundaryConditions());
// Create an identical system using a PeriodicTorsionForce. // Create an identical system using a PeriodicTorsionForce.
......
...@@ -58,6 +58,8 @@ void testSingleParticle() { ...@@ -58,6 +58,8 @@ void testSingleParticle() {
GBSAOBCForce* forceField = new GBSAOBCForce(); GBSAOBCForce* forceField = new GBSAOBCForce();
forceField->addParticle(0.5, 0.15, 1); forceField->addParticle(0.5, 0.15, 1);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(1); vector<Vec3> positions(1);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -96,6 +98,8 @@ void testGlobalSettings() { ...@@ -96,6 +98,8 @@ void testGlobalSettings() {
forceField->setSolventDielectric(solventDielectric); forceField->setSolventDielectric(solventDielectric);
forceField->setSurfaceAreaEnergy(surfaceAreaEnergy); forceField->setSurfaceAreaEnergy(surfaceAreaEnergy);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(1); vector<Vec3> positions(1);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -136,22 +140,34 @@ void testCutoffAndPeriodic() { ...@@ -136,22 +140,34 @@ void testCutoffAndPeriodic() {
nonbonded->setNonbondedMethod(NonbondedForce::CutoffNonPeriodic); nonbonded->setNonbondedMethod(NonbondedForce::CutoffNonPeriodic);
gbsa->setNonbondedMethod(GBSAOBCForce::CutoffNonPeriodic); gbsa->setNonbondedMethod(GBSAOBCForce::CutoffNonPeriodic);
ASSERT(!nonbonded->usesPeriodicBoundaryConditions());
ASSERT(!gbsa->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
context.setPositions(positions); context.setPositions(positions);
State state1 = context.getState(State::Forces); State state1 = context.getState(State::Forces);
nonbonded->setNonbondedMethod(NonbondedForce::CutoffPeriodic); nonbonded->setNonbondedMethod(NonbondedForce::CutoffPeriodic);
gbsa->setNonbondedMethod(GBSAOBCForce::CutoffPeriodic); gbsa->setNonbondedMethod(GBSAOBCForce::CutoffPeriodic);
ASSERT(nonbonded->usesPeriodicBoundaryConditions());
ASSERT(gbsa->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
context.reinitialize(); context.reinitialize();
context.setPositions(positions); context.setPositions(positions);
State state2 = context.getState(State::Forces); State state2 = context.getState(State::Forces);
positions[1][0]+= boxSize; positions[1][0]+= boxSize;
nonbonded->setNonbondedMethod(NonbondedForce::CutoffNonPeriodic); nonbonded->setNonbondedMethod(NonbondedForce::CutoffNonPeriodic);
gbsa->setNonbondedMethod(GBSAOBCForce::CutoffNonPeriodic); gbsa->setNonbondedMethod(GBSAOBCForce::CutoffNonPeriodic);
ASSERT(!nonbonded->usesPeriodicBoundaryConditions());
ASSERT(!gbsa->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
context.reinitialize(); context.reinitialize();
context.setPositions(positions); context.setPositions(positions);
State state3 = context.getState(State::Forces); State state3 = context.getState(State::Forces);
nonbonded->setNonbondedMethod(NonbondedForce::CutoffPeriodic); nonbonded->setNonbondedMethod(NonbondedForce::CutoffPeriodic);
gbsa->setNonbondedMethod(GBSAOBCForce::CutoffPeriodic); gbsa->setNonbondedMethod(GBSAOBCForce::CutoffPeriodic);
ASSERT(nonbonded->usesPeriodicBoundaryConditions());
ASSERT(gbsa->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
context.reinitialize(); context.reinitialize();
context.setPositions(positions); context.setPositions(positions);
State state4 = context.getState(State::Forces); State state4 = context.getState(State::Forces);
......
...@@ -66,6 +66,8 @@ void testSingleParticle() { ...@@ -66,6 +66,8 @@ void testSingleParticle() {
double gamma = 1.0; double gamma = 1.0;
forceField->addParticle(charge, radius, gamma); forceField->addParticle(charge, radius, gamma);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(1); vector<Vec3> positions(1);
......
...@@ -60,6 +60,8 @@ void testAngles() { ...@@ -60,6 +60,8 @@ void testAngles() {
forceField->addAngle(0, 1, 2, PI_M/3, 1.1); forceField->addAngle(0, 1, 2, PI_M/3, 1.1);
forceField->addAngle(1, 2, 3, PI_M/2, 1.2); forceField->addAngle(1, 2, 3, PI_M/2, 1.2);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(4); vector<Vec3> positions(4);
positions[0] = Vec3(0, 1, 0); positions[0] = Vec3(0, 1, 0);
......
...@@ -59,6 +59,8 @@ void testBonds() { ...@@ -59,6 +59,8 @@ void testBonds() {
forceField->addBond(0, 1, 1.5, 0.8); forceField->addBond(0, 1, 1.5, 0.8);
forceField->addBond(1, 2, 1.2, 0.7); forceField->addBond(1, 2, 1.2, 0.7);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 2, 0); positions[0] = Vec3(0, 2, 0);
......
...@@ -59,6 +59,8 @@ void testCoulomb() { ...@@ -59,6 +59,8 @@ void testCoulomb() {
forceField->addParticle(0.5, 1, 0); forceField->addParticle(0.5, 1, 0);
forceField->addParticle(-1.5, 1, 0); forceField->addParticle(-1.5, 1, 0);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(2); vector<Vec3> positions(2);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -82,6 +84,8 @@ void testLJ() { ...@@ -82,6 +84,8 @@ void testLJ() {
forceField->addParticle(0, 1.2, 1); forceField->addParticle(0, 1.2, 1);
forceField->addParticle(0, 1.4, 2); forceField->addParticle(0, 1.4, 2);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(2); vector<Vec3> positions(2);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -201,6 +205,8 @@ void testCutoff() { ...@@ -201,6 +205,8 @@ void testCutoff() {
const double eps = 50.0; const double eps = 50.0;
forceField->setReactionFieldDielectric(eps); forceField->setReactionFieldDielectric(eps);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -252,6 +258,8 @@ void testCutoff14() { ...@@ -252,6 +258,8 @@ void testCutoff14() {
second14 = i; second14 = i;
} }
system.addForce(nonbonded); system.addForce(nonbonded);
ASSERT(!nonbonded->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(5); vector<Vec3> positions(5);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -333,6 +341,8 @@ void testPeriodic() { ...@@ -333,6 +341,8 @@ void testPeriodic() {
nonbonded->setCutoffDistance(cutoff); nonbonded->setCutoffDistance(cutoff);
system.setDefaultPeriodicBoxVectors(Vec3(4, 0, 0), Vec3(0, 4, 0), Vec3(0, 0, 4)); system.setDefaultPeriodicBoxVectors(Vec3(4, 0, 0), Vec3(0, 4, 0), Vec3(0, 0, 4));
system.addForce(nonbonded); system.addForce(nonbonded);
ASSERT(nonbonded->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(3); vector<Vec3> positions(3);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
...@@ -376,6 +386,8 @@ void testDispersionCorrection() { ...@@ -376,6 +386,8 @@ void testDispersionCorrection() {
nonbonded->setCutoffDistance(cutoff); nonbonded->setCutoffDistance(cutoff);
system.setDefaultPeriodicBoxVectors(Vec3(boxSize, 0, 0), Vec3(0, boxSize, 0), Vec3(0, 0, boxSize)); system.setDefaultPeriodicBoxVectors(Vec3(boxSize, 0, 0), Vec3(0, boxSize, 0), Vec3(0, 0, boxSize));
system.addForce(nonbonded); system.addForce(nonbonded);
ASSERT(nonbonded->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
// See if the correction has the correct value. // See if the correction has the correct value.
...@@ -435,6 +447,13 @@ void testSwitchingFunction(NonbondedForce::NonbondedMethod method) { ...@@ -435,6 +447,13 @@ void testSwitchingFunction(NonbondedForce::NonbondedMethod method) {
nonbonded->setSwitchingDistance(1.5); nonbonded->setSwitchingDistance(1.5);
nonbonded->setUseDispersionCorrection(false); nonbonded->setUseDispersionCorrection(false);
system.addForce(nonbonded); system.addForce(nonbonded);
if (method == NonbondedForce::PME) {
ASSERT(nonbonded->usesPeriodicBoundaryConditions());
ASSERT(system.usesPeriodicBoundaryConditions());
} else {
ASSERT(!nonbonded->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
}
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(2); vector<Vec3> positions(2);
positions[0] = Vec3(0, 0, 0); positions[0] = Vec3(0, 0, 0);
......
...@@ -59,6 +59,8 @@ void testPeriodicTorsions() { ...@@ -59,6 +59,8 @@ void testPeriodicTorsions() {
PeriodicTorsionForce* forceField = new PeriodicTorsionForce(); PeriodicTorsionForce* forceField = new PeriodicTorsionForce();
forceField->addTorsion(0, 1, 2, 3, 2, PI_M/3, 1.1); forceField->addTorsion(0, 1, 2, 3, 2, PI_M/3, 1.1);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(4); vector<Vec3> positions(4);
positions[0] = Vec3(0, 1, 0); positions[0] = Vec3(0, 1, 0);
......
...@@ -59,6 +59,8 @@ void testRBTorsions() { ...@@ -59,6 +59,8 @@ void testRBTorsions() {
RBTorsionForce* forceField = new RBTorsionForce(); RBTorsionForce* forceField = new RBTorsionForce();
forceField->addTorsion(0, 1, 2, 3, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6); forceField->addTorsion(0, 1, 2, 3, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6);
system.addForce(forceField); system.addForce(forceField);
ASSERT(!forceField->usesPeriodicBoundaryConditions());
ASSERT(!system.usesPeriodicBoundaryConditions());
Context context(system, integrator, platform); Context context(system, integrator, platform);
vector<Vec3> positions(4); vector<Vec3> positions(4);
positions[0] = Vec3(0, 1, 0); positions[0] = Vec3(0, 1, 0);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment