Merge "Cleanup." into graphics-dev

This commit is contained in:
Alex Sakhartchouk
2012-02-02 09:15:11 -08:00
committed by Android (Google) Code Review
9 changed files with 93 additions and 147 deletions

View File

@@ -47,14 +47,14 @@ public class Camera extends SceneGraphBase {
public void setTransform(Transform t) {
mTransform = t;
if (mField != null) {
mField.set_transformMatrix(0, mTransform.getRSData().getAllocation(), false);
mField.set_transformMatrix(0, mTransform.getRSData().getAllocation(), true);
mField.set_isDirty(0, 1, true);
}
}
public void setFOV(float fov) {
mData.horizontalFOV = fov;
if (mField != null) {
mField.set_horizontalFOV(0, fov, false);
mField.set_horizontalFOV(0, fov, true);
mField.set_isDirty(0, 1, true);
}
}
@@ -62,7 +62,7 @@ public class Camera extends SceneGraphBase {
public void setNear(float n) {
mData.near = n;
if (mField != null) {
mField.set_near(0, n, false);
mField.set_near(0, n, true);
mField.set_isDirty(0, 1, true);
}
}
@@ -70,7 +70,7 @@ public class Camera extends SceneGraphBase {
public void setFar(float f) {
mData.far = f;
if (mField != null) {
mField.set_far(0, f, false);
mField.set_far(0, f, true);
mField.set_isDirty(0, 1, true);
}
}
@@ -80,7 +80,7 @@ public class Camera extends SceneGraphBase {
if (mField != null) {
RenderScriptGL rs = SceneManager.getRS();
mData.name = getNameAlloc(rs);
mField.set_name(0, mData.name, false);
mField.set_name(0, mData.name, true);
mField.set_isDirty(0, 1, true);
}
}

View File

@@ -37,8 +37,9 @@ public class CompoundTransform extends Transform {
int mParentIndex;
protected ScriptField_TransformComponent_s.Item mData;
Component(String name) {
Component(int type, String name) {
mData = new ScriptField_TransformComponent_s.Item();
mData.type = type;
mName = name;
}
@@ -54,7 +55,10 @@ public class CompoundTransform extends Transform {
}
}
abstract ScriptField_TransformComponent_s.Item getRSData();
ScriptField_TransformComponent_s.Item getRSData() {
setNameAlloc();
return mData;
}
protected void update() {
if (mParent != null) {
@@ -69,7 +73,7 @@ public class CompoundTransform extends Transform {
public static class TranslateComponent extends Component {
public TranslateComponent(String name, Float3 translate) {
super(name);
super(ScriptC_export.const_Transform_TRANSLATE, name);
setValue(translate);
}
public Float3 getValue() {
@@ -81,16 +85,11 @@ public class CompoundTransform extends Transform {
mData.value.z = val.z;
update();
}
ScriptField_TransformComponent_s.Item getRSData() {
setNameAlloc();
mData.type = SceneManager.getConst().get_transform_TRANSLATE();
return mData;
}
}
public static class RotateComponent extends Component {
public RotateComponent(String name, Float3 axis, float angle) {
super(name);
super(ScriptC_export.const_Transform_ROTATE, name);
setAxis(axis);
setAngle(angle);
}
@@ -110,16 +109,11 @@ public class CompoundTransform extends Transform {
mData.value.w = val;
update();
}
ScriptField_TransformComponent_s.Item getRSData() {
setNameAlloc();
mData.type = SceneManager.getConst().get_transform_ROTATE();
return mData;
}
}
public static class ScaleComponent extends Component {
public ScaleComponent(String name, Float3 scale) {
super(name);
super(ScriptC_export.const_Transform_SCALE, name);
setValue(scale);
}
public Float3 getValue() {
@@ -131,11 +125,6 @@ public class CompoundTransform extends Transform {
mData.value.z = val.z;
update();
}
ScriptField_TransformComponent_s.Item getRSData() {
setNameAlloc();
mData.type = SceneManager.getConst().get_transform_SCALE();
return mData;
}
}
ScriptField_TransformComponent_s mComponentField;

View File

@@ -70,7 +70,7 @@ public class Float4Param extends ShaderParam {
mData.float_value.w = w;
mData.float_vecSize = vecSize;
if (mField != null) {
mField.set_float_value(0, mData.float_value, false);
mField.set_float_value(0, mData.float_value, true);
mField.set_float_vecSize(0, mData.float_vecSize, true);
}
}
@@ -121,17 +121,17 @@ public class Float4Param extends ShaderParam {
}
int getTypeFromName() {
int paramType = SceneManager.getConst().get_shaderParam_FLOAT4_DATA();
int paramType = ScriptC_export.const_ShaderParam_FLOAT4_DATA;
if (mParamName.equalsIgnoreCase(cameraPos)) {
paramType = SceneManager.getConst().get_shaderParam_FLOAT4_CAMERA_POS();
paramType = ScriptC_export.const_ShaderParam_FLOAT4_CAMERA_POS;
} else if(mParamName.equalsIgnoreCase(cameraDir)) {
paramType = SceneManager.getConst().get_shaderParam_FLOAT4_CAMERA_DIR();
paramType = ScriptC_export.const_ShaderParam_FLOAT4_CAMERA_DIR;
} else if(mParamName.startsWith(lightColor) && findLight(lightColor)) {
paramType = SceneManager.getConst().get_shaderParam_FLOAT4_LIGHT_COLOR();
paramType = ScriptC_export.const_ShaderParam_FLOAT4_LIGHT_COLOR;
} else if(mParamName.startsWith(lightPos) && findLight(lightPos)) {
paramType = SceneManager.getConst().get_shaderParam_FLOAT4_LIGHT_POS();
paramType = ScriptC_export.const_ShaderParam_FLOAT4_LIGHT_POS;
} else if(mParamName.startsWith(lightDir) && findLight(lightDir)) {
paramType = SceneManager.getConst().get_shaderParam_FLOAT4_LIGHT_DIR();
paramType = ScriptC_export.const_ShaderParam_FLOAT4_LIGHT_DIR;
}
return paramType;
}

View File

@@ -41,21 +41,9 @@ import android.util.Log;
* @hide
*/
public class Renderable extends RenderableBase {
Allocation mVertexConstants;
Allocation mVertexParams;
Allocation mFragmentConstants;
Allocation mFragmentParams;
ArrayList<Allocation> mFragmentTextures;
HashMap<String, ShaderParam> mSourceParams;
Mesh mMesh;
int mMeshIndex;
int mCullType;
RenderState mRenderState;
Transform mTransform;
String mMeshName;
@@ -63,18 +51,16 @@ public class Renderable extends RenderableBase {
public String mMaterialName;
// quick hack to prototype
int sceneIndex;
ScriptField_Renderable_s mRsField;
ScriptField_Renderable_s.Item mRsFieldItem;
ScriptField_Renderable_s mField;
ScriptField_Renderable_s.Item mData;
public Renderable() {
mSourceParams = new HashMap<String, ShaderParam>();
mData = new ScriptField_Renderable_s.Item();
}
public void setCullType(int cull) {
mCullType = cull;
mData.cullType = cull;
}
public void setRenderState(RenderState renderState) {
@@ -82,7 +68,7 @@ public class Renderable extends RenderableBase {
}
public void setMesh(Mesh mesh) {
mMesh = mesh;
mData.mesh = mesh;
}
public void setMesh(String mesh, String indexName) {
@@ -102,28 +88,26 @@ public class Renderable extends RenderableBase {
mSourceParams.put(p.getParamName(), p);
}
public void resolveMeshData(Mesh mMesh) {
mMesh = mMesh;
if (mMesh == null) {
public void resolveMeshData(Mesh mesh) {
mData.mesh = mesh;
if (mData.mesh == null) {
Log.v("DRAWABLE: ", "*** NO MESH *** " + mMeshName);
return;
}
int subIndexCount = mMesh.getPrimitiveCount();
int subIndexCount = mData.mesh.getPrimitiveCount();
if (subIndexCount == 1 || mMeshIndexName == null) {
mMeshIndex = 0;
mData.meshIndex = 0;
} else {
for (int i = 0; i < subIndexCount; i ++) {
if (mMesh.getIndexSetAllocation(i).getName().equals(mMeshIndexName)) {
mMeshIndex = i;
if (mData.mesh.getIndexSetAllocation(i).getName().equals(mMeshIndexName)) {
mData.meshIndex = i;
break;
}
}
}
mRsFieldItem.mesh = mMesh;
mRsFieldItem.meshIndex = mMeshIndex;
mRsField.set(mRsFieldItem, 0, true);
if (mField != null) {
mField.set(mData, 0, true);
}
}
void updateTextures(RenderScriptGL rs, Resources res) {
@@ -135,82 +119,62 @@ public class Renderable extends RenderableBase {
TextureParam p = (TextureParam)sp;
TextureBase tex = p.getTexture();
if (tex != null) {
mRsFieldItem.pf_textures[paramIndex++] = tex.getRsData();
mData.pf_textures[paramIndex++] = tex.getRsData();
}
}
}
ProgramFragment pf = mRenderState.mFragment.mProgram;
mRsFieldItem.pf_num_textures = pf != null ? Math.min(pf.getTextureCount(), paramIndex) : 0;
mRsField.set(mRsFieldItem, 0, true);
mData.pf_num_textures = pf != null ? Math.min(pf.getTextureCount(), paramIndex) : 0;
mField.set(mData, 0, true);
}
void updateTextures(RenderScriptGL rs, Allocation a, int slot) {
getRsFieldItem(rs, null);
mRsFieldItem.pf_textures[slot] = a;
}
public void setVisible(RenderScriptGL rs, boolean vis) {
getRsField(rs, null);
mRsFieldItem.cullType = vis ? 0 : 2;
mRsField.set(mRsFieldItem, 0, true);
public void setVisible(boolean vis) {
mData.cullType = vis ? 0 : 2;
if (mField != null) {
mField.set_cullType(0, mData.cullType, true);
}
}
ScriptField_Renderable_s getRsField(RenderScriptGL rs, Resources res) {
if (mRsField != null) {
return mRsField;
if (mField != null) {
return mField;
}
getRsFieldItem(rs, res);
mRsField = new ScriptField_Renderable_s(rs, 1);
mRsField.set(mRsFieldItem, 0, true);
mField = new ScriptField_Renderable_s(rs, 1);
mField.set(mData, 0, true);
return mRsField;
return mField;
}
void getRsFieldItem(RenderScriptGL rs, Resources res) {
if (mRsFieldItem != null) {
return;
}
Allocation pvParams = null, pfParams = null;
Allocation vertexConstants = null, fragmentConstants = null;
VertexShader pv = mRenderState.mVertex;
if (pv != null && pv.getObjectConstants() != null) {
mVertexConstants = Allocation.createTyped(rs, pv.getObjectConstants());
vertexConstants = Allocation.createTyped(rs, pv.getObjectConstants());
Element vertexConst = vertexConstants.getType().getElement();
pvParams = ShaderParam.fillInParams(vertexConst, mSourceParams,
mTransform).getAllocation();
}
FragmentShader pf = mRenderState.mFragment;
if (pf != null && pf.getObjectConstants() != null) {
mFragmentConstants = Allocation.createTyped(rs, pf.getObjectConstants());
fragmentConstants = Allocation.createTyped(rs, pf.getObjectConstants());
Element fragmentConst = fragmentConstants.getType().getElement();
pfParams = ShaderParam.fillInParams(fragmentConst, mSourceParams,
mTransform).getAllocation();
}
// Very important step that links available inputs and the constants vertex and
// fragment shader request
ScriptField_ShaderParam_s pvParams = null;
// Assign all the vertex params
if (mVertexConstants != null) {
Element vertexConst = mVertexConstants.getType().getElement();
pvParams = ShaderParam.fillInParams(vertexConst, mSourceParams, mTransform);
}
ScriptField_ShaderParam_s pfParams = null;
// Assign all the fragment params
if (mFragmentConstants != null) {
Element fragmentConst = mFragmentConstants.getType().getElement();
pfParams = ShaderParam.fillInParams(fragmentConst, mSourceParams, mTransform);
}
mRsFieldItem = new ScriptField_Renderable_s.Item();
mRsFieldItem.mesh = mMesh;
mRsFieldItem.meshIndex = mMeshIndex;
mRsFieldItem.pv_const = mVertexConstants;
mRsFieldItem.pv_constParams = pvParams != null ? pvParams.getAllocation() : null;
mRsFieldItem.pf_const = mFragmentConstants;
mRsFieldItem.pf_constParams = pfParams != null ? pfParams.getAllocation() : null;
mData.pv_const = vertexConstants;
mData.pv_constParams = pvParams;
mData.pf_const = fragmentConstants;
mData.pf_constParams = pfParams;
if (mTransform != null) {
mRsFieldItem.transformMatrix = mTransform.getRSData().getAllocation();
mData.transformMatrix = mTransform.getRSData().getAllocation();
}
mRsFieldItem.name = SceneManager.getStringAsAllocation(rs, getName());
mRsFieldItem.render_state = mRenderState.getRSData().getAllocation();
mRsFieldItem.bVolInitialized = 0;
mRsFieldItem.cullType = mCullType;
mData.name = SceneManager.getStringAsAllocation(rs, getName());
mData.render_state = mRenderState.getRSData().getAllocation();
mData.bVolInitialized = 0;
}
}

View File

@@ -193,7 +193,6 @@ public class Scene extends SceneGraphBase {
for (int i = 0; i < numEntries; i++) {
Renderable d = entries.get(i);
d.resolveMeshData(m);
//mRenderablesField.set(d.getRsField(mRS, mRes), d.sceneIndex, true);
}
}
@@ -250,7 +249,6 @@ public class Scene extends SceneGraphBase {
Allocation[] drawableAllocs = new Allocation[mRenderables.size()];
for (int i = 0; i < mRenderables.size(); i ++) {
Renderable dI = (Renderable)mRenderables.get(i);
dI.sceneIndex = i;
addToMeshMap(dI);
drawableAllocs[i] = dI.getRsField(rs, res).getAllocation();
}

View File

@@ -196,11 +196,6 @@ public class SceneManager extends SceneGraphBase {
return sSceneManager.mRes;
}
// Constants exported from native to java
static ScriptC_export getConst() {
return sSceneManager.mExportScript;
}
public static SceneManager getInstance() {
if (sSceneManager == null) {
sSceneManager = new SceneManager();

View File

@@ -44,19 +44,19 @@ public class TransformParam extends ShaderParam {
}
int getTypeFromName() {
int paramType = SceneManager.getConst().get_shaderParam_TRANSFORM_DATA();
int paramType = ScriptC_export.const_ShaderParam_TRANSFORM_DATA;
if (mParamName.equalsIgnoreCase(view)) {
paramType = SceneManager.getConst().get_shaderParam_TRANSFORM_VIEW();
paramType = ScriptC_export.const_ShaderParam_TRANSFORM_VIEW;
} else if(mParamName.equalsIgnoreCase(proj)) {
paramType = SceneManager.getConst().get_shaderParam_TRANSFORM_PROJ();
paramType = ScriptC_export.const_ShaderParam_TRANSFORM_PROJ;
} else if(mParamName.equalsIgnoreCase(viewProj)) {
paramType = SceneManager.getConst().get_shaderParam_TRANSFORM_VIEW_PROJ();
paramType = ScriptC_export.const_ShaderParam_TRANSFORM_VIEW_PROJ;
} else if(mParamName.equalsIgnoreCase(model)) {
paramType = SceneManager.getConst().get_shaderParam_TRANSFORM_MODEL();
paramType = ScriptC_export.const_ShaderParam_TRANSFORM_MODEL;
} else if(mParamName.equalsIgnoreCase(modelView)) {
paramType = SceneManager.getConst().get_shaderParam_TRANSFORM_MODEL_VIEW();
paramType = ScriptC_export.const_ShaderParam_TRANSFORM_MODEL_VIEW;
} else if(mParamName.equalsIgnoreCase(modelViewProj)) {
paramType = SceneManager.getConst().get_shaderParam_TRANSFORM_MODEL_VIEW_PROJ();
paramType = ScriptC_export.const_ShaderParam_TRANSFORM_MODEL_VIEW_PROJ;
}
return paramType;
}

View File

@@ -21,27 +21,27 @@
#include "scenegraph_objects.rsh"
// Export our native constants to java so that we don't have parallel definitions
const int shaderParam_FLOAT4_DATA = SHADER_PARAM_FLOAT4_DATA;
const int shaderParam_TRANSFORM_DATA = SHADER_PARAM_TRANSFORM_DATA;
const int shaderParam_TRANSFORM_MODEL = SHADER_PARAM_TRANSFORM_MODEL;
const int ShaderParam_FLOAT4_DATA = SHADER_PARAM_FLOAT4_DATA;
const int ShaderParam_TRANSFORM_DATA = SHADER_PARAM_TRANSFORM_DATA;
const int ShaderParam_TRANSFORM_MODEL = SHADER_PARAM_TRANSFORM_MODEL;
const int shaderParam_FLOAT4_CAMERA_POS = SHADER_PARAM_FLOAT4_CAMERA_POS;
const int shaderParam_FLOAT4_CAMERA_DIR = SHADER_PARAM_FLOAT4_CAMERA_DIR;
const int shaderParam_TRANSFORM_VIEW = SHADER_PARAM_TRANSFORM_VIEW;
const int shaderParam_TRANSFORM_PROJ = SHADER_PARAM_TRANSFORM_PROJ;
const int shaderParam_TRANSFORM_VIEW_PROJ = SHADER_PARAM_TRANSFORM_VIEW_PROJ;
const int shaderParam_TRANSFORM_MODEL_VIEW = SHADER_PARAM_TRANSFORM_MODEL_VIEW;
const int shaderParam_TRANSFORM_MODEL_VIEW_PROJ = SHADER_PARAM_TRANSFORM_MODEL_VIEW_PROJ;
const int ShaderParam_FLOAT4_CAMERA_POS = SHADER_PARAM_FLOAT4_CAMERA_POS;
const int ShaderParam_FLOAT4_CAMERA_DIR = SHADER_PARAM_FLOAT4_CAMERA_DIR;
const int ShaderParam_TRANSFORM_VIEW = SHADER_PARAM_TRANSFORM_VIEW;
const int ShaderParam_TRANSFORM_PROJ = SHADER_PARAM_TRANSFORM_PROJ;
const int ShaderParam_TRANSFORM_VIEW_PROJ = SHADER_PARAM_TRANSFORM_VIEW_PROJ;
const int ShaderParam_TRANSFORM_MODEL_VIEW = SHADER_PARAM_TRANSFORM_MODEL_VIEW;
const int ShaderParam_TRANSFORM_MODEL_VIEW_PROJ = SHADER_PARAM_TRANSFORM_MODEL_VIEW_PROJ;
const int shaderParam_FLOAT4_LIGHT_COLOR = SHADER_PARAM_FLOAT4_LIGHT_COLOR;
const int shaderParam_FLOAT4_LIGHT_POS = SHADER_PARAM_FLOAT4_LIGHT_POS;
const int shaderParam_FLOAT4_LIGHT_DIR = SHADER_PARAM_FLOAT4_LIGHT_DIR;
const int ShaderParam_FLOAT4_LIGHT_COLOR = SHADER_PARAM_FLOAT4_LIGHT_COLOR;
const int ShaderParam_FLOAT4_LIGHT_POS = SHADER_PARAM_FLOAT4_LIGHT_POS;
const int ShaderParam_FLOAT4_LIGHT_DIR = SHADER_PARAM_FLOAT4_LIGHT_DIR;
const int shaderParam_TEXTURE = SHADER_PARAM_TEXTURE;
const int ShaderParam_TEXTURE = SHADER_PARAM_TEXTURE;
const int transform_TRANSLATE = TRANSFORM_TRANSLATE;
const int transform_ROTATE = TRANSFORM_ROTATE;
const int transform_SCALE = TRANSFORM_SCALE;
const int Transform_TRANSLATE = TRANSFORM_TRANSLATE;
const int Transform_ROTATE = TRANSFORM_ROTATE;
const int Transform_SCALE = TRANSFORM_SCALE;
SgTransform *exportPtr;
SgTransformComponent *componentPtr;

View File

@@ -86,7 +86,7 @@ public class TestAppRS {
// to make things look a bit better. This could be deleted in the cleanup
Renderable plane = (Renderable)mActiveScene.getRenderableByName("pPlaneShape1");
if (plane != null) {
plane.setVisible(mRS, !mUseBlur);
plane.setVisible(!mUseBlur);
}
}
@@ -252,7 +252,7 @@ public class TestAppRS {
if (plane != null) {
RenderState texState = new RenderState(mGenericV, mTextureF, null, null);
plane.setRenderState(texState);
plane.setVisible(mRS, !mUseBlur);
plane.setVisible(!mUseBlur);
}
mTouchHandler.init(mActiveScene);