aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChien Yang <[email protected]>2004-11-04 02:30:39 +0000
committerChien Yang <[email protected]>2004-11-04 02:30:39 +0000
commitea6311a5ff3ccc1acfab62b8a76868c1c5e0c67f (patch)
treebdf88c1cab129e0127a58803bb9c0cd495918e63 /src
parent7b97aa387b8933c7e0ba61256fe3b11b1b8b189b (diff)
Added in a new property, j3d.viewFrustumCulling, to disable
view frustum culling in the renderer. This will be the workaround for issue 27 until it is fixed. git-svn-id: https://svn.java.net/svn/j3d-core~svn/trunk@69 ba19aa83-45c5-6ac9-afd3-db810772062c
Diffstat (limited to 'src')
-rw-r--r--src/classes/share/javax/media/j3d/CompressedGeometryRenderMethod.java3
-rw-r--r--src/classes/share/javax/media/j3d/DefaultRenderMethod.java3
-rw-r--r--src/classes/share/javax/media/j3d/DisplayListRenderMethod.java8
-rw-r--r--src/classes/share/javax/media/j3d/MasterControl.java12
-rw-r--r--src/classes/share/javax/media/j3d/OrientedShape3DRenderMethod.java3
-rw-r--r--src/classes/share/javax/media/j3d/RenderMolecule.java12
-rw-r--r--src/classes/share/javax/media/j3d/Text3DRenderMethod.java3
-rw-r--r--src/classes/share/javax/media/j3d/VertexArrayRenderMethod.java3
8 files changed, 34 insertions, 13 deletions
diff --git a/src/classes/share/javax/media/j3d/CompressedGeometryRenderMethod.java b/src/classes/share/javax/media/j3d/CompressedGeometryRenderMethod.java
index 0080ca1..5e1e892 100644
--- a/src/classes/share/javax/media/j3d/CompressedGeometryRenderMethod.java
+++ b/src/classes/share/javax/media/j3d/CompressedGeometryRenderMethod.java
@@ -48,7 +48,8 @@ class CompressedGeometryRenderMethod implements RenderMethod {
}
}
else {
- if (ra.renderAtom.localeVwcBounds.intersect(cv.viewFrustum)) {
+ if (!VirtualUniverse.mc.viewFrustumCulling ||
+ ra.renderAtom.localeVwcBounds.intersect(cv.viewFrustum)) {
cv.updateState(pass, dirtyBits);
cv.raIsVisible = true;
renderCompressedGeo(ra, rm, cv);
diff --git a/src/classes/share/javax/media/j3d/DefaultRenderMethod.java b/src/classes/share/javax/media/j3d/DefaultRenderMethod.java
index 6a6f95b..b7b8121 100644
--- a/src/classes/share/javax/media/j3d/DefaultRenderMethod.java
+++ b/src/classes/share/javax/media/j3d/DefaultRenderMethod.java
@@ -45,7 +45,8 @@ class DefaultRenderMethod implements RenderMethod {
}
}
else {
- if (ra.renderAtom.localeVwcBounds.intersect(cv.viewFrustum)) {
+ if (!VirtualUniverse.mc.viewFrustumCulling ||
+ ra.renderAtom.localeVwcBounds.intersect(cv.viewFrustum)) {
cv.raIsVisible = true;
cv.updateState(pass, dirtyBits);
ra.geometry().execute(cv, ra.renderAtom, rm.isNonUniformScale,
diff --git a/src/classes/share/javax/media/j3d/DisplayListRenderMethod.java b/src/classes/share/javax/media/j3d/DisplayListRenderMethod.java
index c593567..b7f442e 100644
--- a/src/classes/share/javax/media/j3d/DisplayListRenderMethod.java
+++ b/src/classes/share/javax/media/j3d/DisplayListRenderMethod.java
@@ -37,13 +37,15 @@ class DisplayListRenderMethod implements RenderMethod {
public boolean render(RenderMolecule rm, Canvas3D cv, int pass,
RenderAtomListInfo ra,
int dirtyBits) {
-
- if (rm.doInfinite || rm.vwcBounds.intersect(cv.viewFrustum)) {
+
+ if (rm.doInfinite ||
+ !VirtualUniverse.mc.viewFrustumCulling ||
+ rm.vwcBounds.intersect(cv.viewFrustum)) {
cv.updateState(pass, dirtyBits);
cv.callDisplayList(cv.ctx, rm.displayListId,
rm.isNonUniformScale);
return true;
- }
+ }
return false;
}
diff --git a/src/classes/share/javax/media/j3d/MasterControl.java b/src/classes/share/javax/media/j3d/MasterControl.java
index e6ddcc3..6f2b105 100644
--- a/src/classes/share/javax/media/j3d/MasterControl.java
+++ b/src/classes/share/javax/media/j3d/MasterControl.java
@@ -96,6 +96,17 @@ class MasterControl {
boolean transparentOffScreen = false;
+
+
+ /**
+ * the flag to indicate whether should renderer view frustum culling be true.
+ * true by default.
+ */
+ // Set by the -Dj3d.viewFrustumCulling property, When this flag is
+ // set to false, the renderer view frustum culling is turned off.
+
+ boolean viewFrustumCulling = true;
+
/**
* the flag to indicate whether the geometry should be locked or not
*/
@@ -467,6 +478,7 @@ class MasterControl {
// by MIK OF CLASSX
transparentOffScreen = getBooleanProperty("j3d.transparentOffScreen", transparentOffScreen,"transparent OffScreen");
+ viewFrustumCulling = getBooleanProperty("j3d.viewFrustumCulling", viewFrustumCulling,"View frustum culling in the renderer is");
sortShape3DBounds =
getBooleanProperty("j3d.sortShape3DBounds", sortShape3DBounds,
diff --git a/src/classes/share/javax/media/j3d/OrientedShape3DRenderMethod.java b/src/classes/share/javax/media/j3d/OrientedShape3DRenderMethod.java
index bfffdd3..ce93f2b 100644
--- a/src/classes/share/javax/media/j3d/OrientedShape3DRenderMethod.java
+++ b/src/classes/share/javax/media/j3d/OrientedShape3DRenderMethod.java
@@ -74,7 +74,8 @@ class OrientedShape3DRenderMethod implements RenderMethod {
}
}
else {
- if (ra.renderAtom.localeVwcBounds.intersect(cv.viewFrustum)) {
+ if (!VirtualUniverse.mc.viewFrustumCulling ||
+ ra.renderAtom.localeVwcBounds.intersect(cv.viewFrustum)) {
cv.updateState(pass, dirtyBits);
cv.raIsVisible = true;
trans = ra.localToVworld;
diff --git a/src/classes/share/javax/media/j3d/RenderMolecule.java b/src/classes/share/javax/media/j3d/RenderMolecule.java
index 7812862..acf5655 100644
--- a/src/classes/share/javax/media/j3d/RenderMolecule.java
+++ b/src/classes/share/javax/media/j3d/RenderMolecule.java
@@ -1868,11 +1868,13 @@ class RenderMolecule extends IndexedObject implements ObjectUpdate, NodeComponen
*/
// Send down the model view only once, if its not of type text
if ((primaryMoleculeType & (TEXT3D_MOLECULE| ORIENTEDSHAPE3D_MOLECULE)) == 0) {
+
if (primaryRenderAtomList != null) {
if ((primaryRenderMethod != VirtualUniverse.mc.getDisplayListRenderMethod()) ||
modeSupportDL) {
if (primaryMoleculeType != SEPARATE_DLIST_PER_RINFO_MOLECULE) {
+
if ((primaryRenderMethod != VirtualUniverse.mc.getDisplayListRenderMethod()) &&
(pass == TextureBin.USE_DISPLAYLIST)) {
pass = TextureBin.USE_VERTEXARRAY;
@@ -1898,6 +1900,7 @@ class RenderMolecule extends IndexedObject implements ObjectUpdate, NodeComponen
}
}
else { // TEXT3D or ORIENTEDSHAPE3D
+
if (primaryRenderAtomList != null) {
if (pass == TextureBin.USE_DISPLAYLIST) {
pass = TextureBin.USE_VERTEXARRAY;
@@ -1957,11 +1960,6 @@ class RenderMolecule extends IndexedObject implements ObjectUpdate, NodeComponen
int bitMask = geometryType | Canvas3D.MATERIAL_DIRTY|
Canvas3D.COLORINGATTRS_DIRTY|
Canvas3D.TRANSPARENCYATTRS_DIRTY;
-
- /*
- System.out.println("RM : updateAttributes " + this +
- " dirtyBits is " + dirtyBits);
- */
// If beginning of a frame then reload all the attributes
if ((cv.canvasDirty & bitMask) != 0) {
@@ -2132,10 +2130,14 @@ class RenderMolecule extends IndexedObject implements ObjectUpdate, NodeComponen
}
if ((primaryMoleculeType & (TEXT3D_MOLECULE| ORIENTEDSHAPE3D_MOLECULE)) == 0) {
+ /* System.out.println("updateAttributes setModelViewMatrix (1)"); */
+
Transform3D modelMatrix =
trans[localToVworldIndex[NodeRetained.LAST_LOCAL_TO_VWORLD]];
if (cv.modelMatrix != modelMatrix) {
+ /* System.out.println("updateAttributes setModelViewMatrix (2)"); */
+
cv.setModelViewMatrix(cv.ctx, cv.vworldToEc.mat,
modelMatrix);
}
diff --git a/src/classes/share/javax/media/j3d/Text3DRenderMethod.java b/src/classes/share/javax/media/j3d/Text3DRenderMethod.java
index 8ff96a3..e967b45 100644
--- a/src/classes/share/javax/media/j3d/Text3DRenderMethod.java
+++ b/src/classes/share/javax/media/j3d/Text3DRenderMethod.java
@@ -72,7 +72,8 @@ class Text3DRenderMethod implements RenderMethod {
}
}
else {
- if (ra.renderAtom.localeVwcBounds.intersect(cv.viewFrustum)) {
+ if (!VirtualUniverse.mc.viewFrustumCulling ||
+ ra.renderAtom.localeVwcBounds.intersect(cv.viewFrustum)) {
cv.updateState(pass, dirtyBits);
cv.raIsVisible = true;
trans = ra.localToVworld;
diff --git a/src/classes/share/javax/media/j3d/VertexArrayRenderMethod.java b/src/classes/share/javax/media/j3d/VertexArrayRenderMethod.java
index 759b6fd..e2d72d7 100644
--- a/src/classes/share/javax/media/j3d/VertexArrayRenderMethod.java
+++ b/src/classes/share/javax/media/j3d/VertexArrayRenderMethod.java
@@ -47,7 +47,8 @@ class VertexArrayRenderMethod implements RenderMethod {
}
}
else {
- if (ra.renderAtom.localeVwcBounds.intersect(cv.viewFrustum)) {
+ if (!VirtualUniverse.mc.viewFrustumCulling ||
+ ra.renderAtom.localeVwcBounds.intersect(cv.viewFrustum)) {
cv.updateState(pass, dirtyBits);
cv.raIsVisible = true;
renderGeo(ra, rm, pass, cv);