ShaderParampublic abstract class ShaderParam extends SceneGraphBase
Fields Summary |
---|
static final String | cameraPos | static final String | cameraDir | static final String | lightColor | static final String | lightPos | static final String | lightDir | static final String | view | static final String | proj | static final String | viewProj | static final String | model | static final String | modelView | static final String | modelViewProj | static final long | sMaxTimeStamp | ScriptField_ShaderParamData_s.Item | mData | ScriptField_ShaderParamData_s | mField | String | mParamName | Camera | mCamera |
Constructors Summary |
---|
public ShaderParam(String name)
mParamName = name;
mData = new ScriptField_ShaderParamData_s.Item();
|
Methods Summary |
---|
static ScriptField_ShaderParam_s | fillInParams(android.renderscript.Element constantElem, java.util.HashMap sourceParams, com.android.scenegraph.Transform transform)
RenderScriptGL rs = SceneManager.getRS();
ArrayList<ScriptField_ShaderParam_s.Item> paramList;
paramList = new ArrayList<ScriptField_ShaderParam_s.Item>();
int subElemCount = constantElem.getSubElementCount();
for (int i = 0; i < subElemCount; i ++) {
String inputName = constantElem.getSubElementName(i);
int offset = constantElem.getSubElementOffsetBytes(i);
ShaderParam matchingParam = sourceParams.get(inputName);
Element subElem = constantElem.getSubElement(i);
// Make one if it's not there
if (matchingParam == null) {
if (subElem.getDataType() == Element.DataType.FLOAT_32) {
matchingParam = new Float4Param(inputName, 0.5f, 0.5f, 0.5f, 0.5f);
} else if (subElem.getDataType() == Element.DataType.MATRIX_4X4) {
TransformParam trParam = new TransformParam(inputName);
trParam.setTransform(transform);
matchingParam = trParam;
}
}
ScriptField_ShaderParam_s.Item paramRS = new ScriptField_ShaderParam_s.Item();
paramRS.bufferOffset = offset;
paramRS.transformTimestamp = 0;
paramRS.dataTimestamp = 0;
paramRS.data = matchingParam.getRSData().getAllocation();
if (subElem.getDataType() == Element.DataType.FLOAT_32) {
paramRS.float_vecSize = subElem.getVectorSize();
}
paramList.add(paramRS);
}
ScriptField_ShaderParam_s rsParams = null;
int paramCount = paramList.size();
if (paramCount != 0) {
rsParams = new ScriptField_ShaderParam_s(rs, paramCount);
for (int i = 0; i < paramCount; i++) {
rsParams.set(paramList.get(i), i, false);
}
rsParams.copyAll();
}
return rsParams;
| public java.lang.String | getParamName()
return mParamName;
| public ScriptField_ShaderParamData_s | getRSData()
if (mField != null) {
return mField;
}
RenderScriptGL rs = SceneManager.getRS();
mField = new ScriptField_ShaderParamData_s(rs, 1);
if (mParamName != null) {
mData.paramName = SceneManager.getCachedAlloc(mParamName);
if (mData.paramName == null) {
mData.paramName = SceneManager.getStringAsAllocation(rs, mParamName);
SceneManager.cacheAlloc(mParamName, mData.paramName);
}
}
initLocalData();
mData.timestamp = 1;
mField.set(mData, 0, true);
return mField;
| protected void | incTimestamp()
if (mField != null) {
mData.timestamp ++;
mData.timestamp %= sMaxTimeStamp;
mField.set_timestamp(0, mData.timestamp, true);
}
| abstract void | initLocalData()
| public void | setCamera(Camera c)
mCamera = c;
if (mField != null) {
mData.camera = mCamera.getRSData().getAllocation();
mField.set_camera(0, mData.camera, true);
}
|
|