ShaderParam.java revision dd1da451159578d865230ceada3e1f0058e3c18e
1a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk/* 2a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project 3a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * 4a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License"); 5a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * you may not use this file except in compliance with the License. 6a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * You may obtain a copy of the License at 7a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * 8a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * http://www.apache.org/licenses/LICENSE-2.0 9a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * 10a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * Unless required by applicable law or agreed to in writing, software 11a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS, 12a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * See the License for the specific language governing permissions and 14a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * limitations under the License. 15a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk */ 16a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk 17a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukpackage com.android.scenegraph; 18a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk 19a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport java.lang.Math; 20a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport java.util.ArrayList; 21a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk 22dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchoukimport android.renderscript.RenderScriptGL; 23a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport android.renderscript.Matrix4f; 24a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport android.renderscript.ProgramFragment; 25a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport android.renderscript.ProgramStore; 26a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport android.renderscript.ProgramVertex; 27a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport android.renderscript.Element; 28a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport android.util.Log; 29a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk 30a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk/** 31a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * @hide 32a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk */ 33dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchoukpublic abstract class ShaderParam extends SceneGraphBase { 34dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int FLOAT4_DATA = 0; 35dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int FLOAT4_CAMERA_POS = 1; 36dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int FLOAT4_CAMERA_DIR = 2; 37dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int FLOAT4_LIGHT_COLOR = 3; 38dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int FLOAT4_LIGHT_POS = 4; 39dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int FLOAT4_LIGHT_DIR = 5; 40dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk 41dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int TRANSFORM_DATA = 100; 42dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int TRANSFORM_VIEW = 101; 43dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int TRANSFORM_PROJ = 102; 44dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int TRANSFORM_VIEW_PROJ = 103; 45dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int TRANSFORM_MODEL = 104; 46dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int TRANSFORM_MODEL_VIEW = 105; 47dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int TRANSFORM_MODEL_VIEW_PROJ = 106; 48dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk 49dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final int TEXTURE = 200; 50dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk 51dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final String cameraPos = "cameraPos"; 52dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final String cameraDir = "cameraDir"; 53dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk 54dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final String lightColor = "lightColor"; 55dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final String lightPos = "lightPos"; 56dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final String lightDir = "lightDir"; 57dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk 58dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final String view = "view"; 59dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final String proj = "proj"; 60dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final String viewProj = "viewProj"; 61dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final String model = "model"; 62dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final String modelView = "modelView"; 63dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk static final String modelViewProj = "modelViewProj"; 64dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk 65dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk ScriptField_ShaderParam_s.Item mRsFieldItem; 66dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk 67a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk String mParamName; 68dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk int mOffset; 69a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk 70a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk public ShaderParam(String name) { 71a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk mParamName = name; 72a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk } 73a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk 74a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk public String getParamName() { 75a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk return mParamName; 76a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk } 77dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk 78dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk void setOffset(int offset) { 79dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk mOffset = offset; 80dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk } 81dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk 82dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk abstract void initLocalData(RenderScriptGL rs); 83dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk 84dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk public ScriptField_ShaderParam_s.Item getRSData(RenderScriptGL rs) { 85dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk if (mRsFieldItem != null) { 86dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk return mRsFieldItem; 87dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk } 88dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk 89dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk mRsFieldItem = new ScriptField_ShaderParam_s.Item(); 90dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk initLocalData(rs); 91dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk return mRsFieldItem; 92dd1da451159578d865230ceada3e1f0058e3c18eAlex Sakhartchouk } 93a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk} 94a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk 95a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk 96a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk 97a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk 98a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk 99