| 633 |
633 |
*
|
| 634 |
634 |
* @y.exclude
|
| 635 |
635 |
*/
|
| 636 |
|
public void debug()
|
|
636 |
public void debugJobs()
|
| 637 |
637 |
{
|
| 638 |
638 |
if( mJobNode[0]!=null )
|
| 639 |
639 |
{
|
| ... | ... | |
| 670 |
670 |
sb.append(") ");
|
| 671 |
671 |
}
|
| 672 |
672 |
|
| 673 |
|
DistortedLibrary.logMessage("MeshBase: "+sb.toString() );
|
|
673 |
DistortedLibrary.logMessage("MeshBase: "+sb);
|
| 674 |
674 |
}
|
| 675 |
675 |
}
|
| 676 |
676 |
|
| ... | ... | |
| 692 |
692 |
sb.append(mVertAttribs1[VERT1_ATTRIBS*i+POS_ATTRIB+1]);
|
| 693 |
693 |
sb.append(',');
|
| 694 |
694 |
sb.append(mVertAttribs1[VERT1_ATTRIBS*i+POS_ATTRIB+2]);
|
| 695 |
|
sb.append(") ");
|
|
695 |
sb.append(")\n");
|
| 696 |
696 |
}
|
| 697 |
|
DistortedLibrary.logMessage("MeshBase: "+sb.toString());
|
|
697 |
DistortedLibrary.logMessage("MeshBase: vertices: \n"+sb);
|
|
698 |
}
|
|
699 |
|
|
700 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
701 |
/**
|
|
702 |
* Not part of public API, do not document (public only because has to be used from the main package)
|
|
703 |
*
|
|
704 |
* @y.exclude
|
|
705 |
*/
|
|
706 |
public void printNor()
|
|
707 |
{
|
|
708 |
StringBuilder sb = new StringBuilder();
|
|
709 |
|
|
710 |
for(int i=0; i<mNumVertices; i++)
|
|
711 |
{
|
|
712 |
sb.append('(');
|
|
713 |
sb.append(mVertAttribs1[VERT1_ATTRIBS*i+NOR_ATTRIB ]);
|
|
714 |
sb.append(',');
|
|
715 |
sb.append(mVertAttribs1[VERT1_ATTRIBS*i+NOR_ATTRIB+1]);
|
|
716 |
sb.append(',');
|
|
717 |
sb.append(mVertAttribs1[VERT1_ATTRIBS*i+NOR_ATTRIB+2]);
|
|
718 |
sb.append(")\n");
|
|
719 |
}
|
|
720 |
DistortedLibrary.logMessage("MeshBase: normals:\n"+sb);
|
| 698 |
721 |
}
|
| 699 |
722 |
|
| 700 |
723 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| ... | ... | |
| 713 |
736 |
sb.append(' ');
|
| 714 |
737 |
}
|
| 715 |
738 |
|
| 716 |
|
DistortedLibrary.logMessage("MeshBase: "+sb.toString());
|
|
739 |
DistortedLibrary.logMessage("MeshBase: "+sb);
|
| 717 |
740 |
}
|
| 718 |
741 |
|
| 719 |
742 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| ... | ... | |
| 745 |
768 |
}
|
| 746 |
769 |
}
|
| 747 |
770 |
|
| 748 |
|
DistortedLibrary.logMessage("MeshBase: "+sb.toString());
|
|
771 |
DistortedLibrary.logMessage("MeshBase: "+sb);
|
| 749 |
772 |
}
|
| 750 |
773 |
|
| 751 |
774 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| ... | ... | |
| 1210 |
1233 |
* <p>
|
| 1211 |
1234 |
* This is a static, permanent modification of the vertices contained in this Mesh. If the effects
|
| 1212 |
1235 |
* contain any Dynamics, the Dynamics will be evaluated at 0.
|
| 1213 |
|
*
|
| 1214 |
1236 |
* We would call this several times building up a list of Effects to do. This list of effects gets
|
| 1215 |
1237 |
* lazily executed only when the Mesh is used for rendering for the first time.
|
| 1216 |
1238 |
*
|
| ... | ... | |
| 1238 |
1260 |
* maps[1] = the map for the 2nd component
|
| 1239 |
1261 |
* maps[2] = null
|
| 1240 |
1262 |
* maps[3] = the map for the 4th component
|
| 1241 |
|
*
|
| 1242 |
1263 |
* A map's width and height have to be non-zero (but can be negative!)
|
| 1243 |
1264 |
*
|
| 1244 |
1265 |
* @param maps List of texture maps to apply to the texture's components.
|
| ... | ... | |
| 1270 |
1291 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 1271 |
1292 |
/**
|
| 1272 |
1293 |
* Set Effect association.
|
| 1273 |
|
*
|
| 1274 |
1294 |
* This creates an association between a Component of this Mesh and a Vertex Effect.
|
| 1275 |
1295 |
* One can set two types of associations - an 'logical and' and a 'equal' associations and the Effect
|
| 1276 |
1296 |
* will only be active on vertices of Components such that
|
| 1277 |
|
*
|
| 1278 |
1297 |
* (effect andAssoc) & (component andAssoc) != 0 || (effect equAssoc) == (mesh equAssoc)
|
| 1279 |
|
*
|
| 1280 |
1298 |
* (see main_vertex_shader)
|
| 1281 |
|
*
|
| 1282 |
1299 |
* The point: this way we can configure the system so that each Vertex Effect acts only on a certain
|
| 1283 |
1300 |
* subset of a Mesh, thus potentially significantly reducing the number of render calls.
|
| 1284 |
1301 |
*/
|
| ... | ... | |
| 1300 |
1317 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 1301 |
1318 |
/**
|
| 1302 |
1319 |
* Set center of a Component.
|
| 1303 |
|
*
|
| 1304 |
1320 |
* A 'center' of a (effect) component is a 3D point in space. The array of centers gets sent to
|
| 1305 |
1321 |
* the vertex shader as a Uniform Buffer Object; in the vertex shader we can then use it to compute
|
| 1306 |
1322 |
* the 'Inflation' of the whole Mesh per-component. 'Inflation' is needed by postprocess effects to
|
| 1307 |
1323 |
* add the 'halo' around an object.
|
| 1308 |
|
*
|
| 1309 |
1324 |
* This is all 'per-component' so that a user has a chance to make the halo look right in case of
|
| 1310 |
1325 |
* non-convex meshes: then we need to ensure that each component of such a mesh is a convex
|
| 1311 |
1326 |
* sub-mesh with its center being more-or-less the center of gravity of the sub-mesh.
|
| ... | ... | |
| 1344 |
1359 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 1345 |
1360 |
/**
|
| 1346 |
1361 |
* Adds an empty (no vertices) texture component to the end of the text component list.
|
| 1347 |
|
*
|
| 1348 |
1362 |
* Sometimes we want to do this to have several Meshes with equal number of tex components each.
|
| 1349 |
1363 |
*/
|
| 1350 |
1364 |
public void addEmptyTexComponent()
|
fix the 'holes in textures' problem.