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