Merge change 20046
* changes: Seperate Light and Sampler from RenderScript.java
This commit is contained in:
87
graphics/java/android/renderscript/Light.java
Normal file
87
graphics/java/android/renderscript/Light.java
Normal file
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.renderscript;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.util.Config;
|
||||
import android.util.Log;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*
|
||||
**/
|
||||
public class Light extends BaseObj {
|
||||
Light(int id, RenderScript rs) {
|
||||
super(rs);
|
||||
mID = id;
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
mRS.nLightDestroy(mID);
|
||||
mID = 0;
|
||||
}
|
||||
|
||||
public void setColor(float r, float g, float b) {
|
||||
mRS.nLightSetColor(mID, r, g, b);
|
||||
}
|
||||
|
||||
public void setPosition(float x, float y, float z) {
|
||||
mRS.nLightSetPosition(mID, x, y, z);
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
RenderScript mRS;
|
||||
boolean mIsMono;
|
||||
boolean mIsLocal;
|
||||
|
||||
public Builder(RenderScript rs) {
|
||||
mRS = rs;
|
||||
mIsMono = false;
|
||||
mIsLocal = false;
|
||||
}
|
||||
|
||||
public void lightSetIsMono(boolean isMono) {
|
||||
mIsMono = isMono;
|
||||
}
|
||||
|
||||
public void lightSetIsLocal(boolean isLocal) {
|
||||
mIsLocal = isLocal;
|
||||
}
|
||||
|
||||
static synchronized Light internalCreate(RenderScript rs, Builder b) {
|
||||
rs.nSamplerBegin();
|
||||
rs.nLightSetIsMono(b.mIsMono);
|
||||
rs.nLightSetIsLocal(b.mIsLocal);
|
||||
int id = rs.nLightCreate();
|
||||
return new Light(id, rs);
|
||||
}
|
||||
|
||||
public Light create() {
|
||||
return internalCreate(mRS, this);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class ProgramFragment extends BaseObj {
|
||||
mRS.nProgramFragmentBindTexture(mID, slot, va.mID);
|
||||
}
|
||||
|
||||
public void bindSampler(RenderScript.Sampler vs, int slot) {
|
||||
public void bindSampler(Sampler vs, int slot) {
|
||||
mRS.nProgramFragmentBindSampler(mID, slot, vs.mID);
|
||||
}
|
||||
|
||||
|
||||
@@ -201,35 +201,6 @@ public class RenderScript {
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Element
|
||||
|
||||
|
||||
public enum SamplerParam {
|
||||
FILTER_MIN (0),
|
||||
FILTER_MAG (1),
|
||||
WRAP_MODE_S (2),
|
||||
WRAP_MODE_T (3),
|
||||
WRAP_MODE_R (4);
|
||||
|
||||
int mID;
|
||||
SamplerParam(int id) {
|
||||
mID = id;
|
||||
}
|
||||
}
|
||||
|
||||
public enum SamplerValue {
|
||||
NEAREST (0),
|
||||
LINEAR (1),
|
||||
LINEAR_MIP_LINEAR (2),
|
||||
WRAP (3),
|
||||
CLAMP (4);
|
||||
|
||||
int mID;
|
||||
SamplerValue(int id) {
|
||||
mID = id;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Triangle Mesh
|
||||
@@ -329,80 +300,6 @@ public class RenderScript {
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// ProgramFragmentStore
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// ProgramFragment
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Sampler
|
||||
|
||||
public class Sampler extends BaseObj {
|
||||
Sampler(int id) {
|
||||
super(RenderScript.this);
|
||||
mID = id;
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
nSamplerDestroy(mID);
|
||||
mID = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void samplerBegin() {
|
||||
nSamplerBegin();
|
||||
}
|
||||
|
||||
public void samplerSet(SamplerParam p, SamplerValue v) {
|
||||
nSamplerSet(p.mID, v.mID);
|
||||
}
|
||||
|
||||
public Sampler samplerCreate() {
|
||||
int id = nSamplerCreate();
|
||||
return new Sampler(id);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Light
|
||||
|
||||
public class Light extends BaseObj {
|
||||
Light(int id) {
|
||||
super(RenderScript.this);
|
||||
mID = id;
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
nLightDestroy(mID);
|
||||
mID = 0;
|
||||
}
|
||||
|
||||
public void setColor(float r, float g, float b) {
|
||||
nLightSetColor(mID, r, g, b);
|
||||
}
|
||||
|
||||
public void setPosition(float x, float y, float z) {
|
||||
nLightSetPosition(mID, x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
public void lightBegin() {
|
||||
nLightBegin();
|
||||
}
|
||||
|
||||
public void lightSetIsMono(boolean isMono) {
|
||||
nLightSetIsMono(isMono);
|
||||
}
|
||||
|
||||
public void lightSetIsLocal(boolean isLocal) {
|
||||
nLightSetIsLocal(isLocal);
|
||||
}
|
||||
|
||||
public Light lightCreate() {
|
||||
int id = nLightCreate();
|
||||
return new Light(id);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// File
|
||||
|
||||
|
||||
113
graphics/java/android/renderscript/Sampler.java
Normal file
113
graphics/java/android/renderscript/Sampler.java
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.renderscript;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.util.Config;
|
||||
import android.util.Log;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*
|
||||
**/
|
||||
public class Sampler extends BaseObj {
|
||||
public enum Value {
|
||||
NEAREST (0),
|
||||
LINEAR (1),
|
||||
LINEAR_MIP_LINEAR (2),
|
||||
WRAP (3),
|
||||
CLAMP (4);
|
||||
|
||||
int mID;
|
||||
Value(int id) {
|
||||
mID = id;
|
||||
}
|
||||
}
|
||||
|
||||
Sampler(int id, RenderScript rs) {
|
||||
super(rs);
|
||||
mID = id;
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
mRS.nSamplerDestroy(mID);
|
||||
mID = 0;
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
RenderScript mRS;
|
||||
Value mMin;
|
||||
Value mMag;
|
||||
Value mWrapS;
|
||||
Value mWrapT;
|
||||
Value mWrapR;
|
||||
|
||||
public Builder(RenderScript rs) {
|
||||
mRS = rs;
|
||||
mMin = Value.NEAREST;
|
||||
mMag = Value.NEAREST;
|
||||
mWrapS = Value.WRAP;
|
||||
mWrapT = Value.WRAP;
|
||||
mWrapR = Value.WRAP;
|
||||
}
|
||||
|
||||
public void setMin(Value v) {
|
||||
mMin = v;
|
||||
}
|
||||
|
||||
public void setMag(Value v) {
|
||||
mMag = v;
|
||||
}
|
||||
|
||||
public void setWrapS(Value v) {
|
||||
mWrapS = v;
|
||||
}
|
||||
|
||||
public void setWrapT(Value v) {
|
||||
mWrapT = v;
|
||||
}
|
||||
|
||||
public void setWrapR(Value v) {
|
||||
mWrapR = v;
|
||||
}
|
||||
|
||||
static synchronized Sampler internalCreate(RenderScript rs, Builder b) {
|
||||
rs.nSamplerBegin();
|
||||
rs.nSamplerSet(0, b.mMin.mID);
|
||||
rs.nSamplerSet(1, b.mMag.mID);
|
||||
rs.nSamplerSet(2, b.mWrapS.mID);
|
||||
rs.nSamplerSet(3, b.mWrapT.mID);
|
||||
rs.nSamplerSet(4, b.mWrapR.mID);
|
||||
int id = rs.nSamplerCreate();
|
||||
return new Sampler(id, rs);
|
||||
}
|
||||
|
||||
public Sampler create() {
|
||||
return internalCreate(mRS, this);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,15 +5,6 @@
|
||||
#pragma stateFragment(PFBackground)
|
||||
#pragma stateFragmentStore(PSBackground)
|
||||
|
||||
/*
|
||||
typedef struct FilmScriptUserEnvRec {
|
||||
RsAllocation tex[13];
|
||||
int32_t triangleOffsets[64];
|
||||
float triangleOffsetsTex[64];
|
||||
int32_t triangleOffsetsCount;
|
||||
} FilmScriptUserEnv;
|
||||
*/
|
||||
|
||||
#define POS_TRANSLATE 0
|
||||
#define POS_ROTATE 1
|
||||
#define POS_FOCUS 2
|
||||
@@ -39,9 +30,7 @@ int main(int index)
|
||||
matrixRotate(mat1, rot, 1.f, 0.f, 0.f);
|
||||
storeMatrix(3, 0, mat1);
|
||||
|
||||
//materialDiffuse(con, 0.0f, 0.0f, 0.0f, 1.0f);
|
||||
//materialSpecular(con, 0.5f, 0.5f, 0.5f, 0.5f);
|
||||
//materialShininess(intToFloat(20));
|
||||
// Draw the lighting effect in the strip and fill the Z buffer.
|
||||
drawTriangleMesh(NAMED_mesh);
|
||||
|
||||
|
||||
|
||||
@@ -33,6 +33,8 @@ import android.renderscript.ScriptC;
|
||||
import android.renderscript.Script;
|
||||
import android.renderscript.ProgramFragment;
|
||||
import android.renderscript.ProgramStore;
|
||||
import android.renderscript.Sampler;
|
||||
import android.renderscript.Light;
|
||||
|
||||
public class FilmRS {
|
||||
private final int POS_TRANSLATE = 0;
|
||||
@@ -74,7 +76,7 @@ public class FilmRS {
|
||||
private Script mScriptImage;
|
||||
private Element mElementVertex;
|
||||
private Element mElementIndex;
|
||||
private RenderScript.Sampler mSampler;
|
||||
private Sampler mSampler;
|
||||
private ProgramStore mPSBackground;
|
||||
private ProgramStore mPSImages;
|
||||
private ProgramFragment mPFBackground;
|
||||
@@ -92,7 +94,7 @@ public class FilmRS {
|
||||
private Allocation mAllocOffsets;
|
||||
|
||||
private RenderScript.TriangleMesh mMesh;
|
||||
private RenderScript.Light mLight;
|
||||
private Light mLight;
|
||||
|
||||
private FilmStripMesh mFSM;
|
||||
|
||||
@@ -119,16 +121,12 @@ public class FilmRS {
|
||||
}
|
||||
|
||||
private void initPF() {
|
||||
mRS.samplerBegin();
|
||||
mRS.samplerSet(RenderScript.SamplerParam.FILTER_MIN,
|
||||
RenderScript.SamplerValue.LINEAR);//_MIP_LINEAR);
|
||||
mRS.samplerSet(RenderScript.SamplerParam.FILTER_MAG,
|
||||
RenderScript.SamplerValue.LINEAR);
|
||||
mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_S,
|
||||
RenderScript.SamplerValue.CLAMP);
|
||||
mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_T,
|
||||
RenderScript.SamplerValue.WRAP);
|
||||
mSampler = mRS.samplerCreate();
|
||||
Sampler.Builder bs = new Sampler.Builder(mRS);
|
||||
bs.setMin(Sampler.Value.LINEAR);//_MIP_LINEAR);
|
||||
bs.setMag(Sampler.Value.LINEAR);
|
||||
bs.setWrapS(Sampler.Value.CLAMP);
|
||||
bs.setWrapT(Sampler.Value.WRAP);
|
||||
mSampler = bs.create();
|
||||
|
||||
ProgramFragment.Builder b = new ProgramFragment.Builder(mRS, null, null);
|
||||
|
||||
@@ -143,8 +141,7 @@ public class FilmRS {
|
||||
}
|
||||
|
||||
private void initPV() {
|
||||
mRS.lightBegin();
|
||||
mLight = mRS.lightCreate();
|
||||
mLight = (new Light.Builder(mRS)).create();
|
||||
mLight.setPosition(0, -0.5f, -1.0f);
|
||||
|
||||
mRS.programVertexBegin(null, null);
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
package com.android.grass.rs;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import static android.renderscript.RenderScript.SamplerParam.*;
|
||||
import static android.renderscript.RenderScript.SamplerValue.*;
|
||||
import android.renderscript.Sampler;
|
||||
import static android.renderscript.Sampler.Value.*;
|
||||
import static android.renderscript.ProgramFragment.EnvMode.*;
|
||||
import static android.renderscript.ProgramStore.DepthFunc.*;
|
||||
import static android.renderscript.ProgramStore.BlendSrcFunc;
|
||||
@@ -72,7 +72,7 @@ class GrassRS {
|
||||
@SuppressWarnings({"FieldCanBeLocal"})
|
||||
private ScriptC mScript;
|
||||
@SuppressWarnings({"FieldCanBeLocal"})
|
||||
private RenderScript.Sampler mSampler;
|
||||
private Sampler mSampler;
|
||||
@SuppressWarnings({"FieldCanBeLocal"})
|
||||
private ProgramFragment mPfBackground;
|
||||
@SuppressWarnings({"FieldCanBeLocal"})
|
||||
@@ -205,12 +205,12 @@ class GrassRS {
|
||||
}
|
||||
|
||||
private void createProgramFragment() {
|
||||
mRS.samplerBegin();
|
||||
mRS.samplerSet(FILTER_MIN, LINEAR);
|
||||
mRS.samplerSet(FILTER_MAG, LINEAR);
|
||||
mRS.samplerSet(WRAP_MODE_S, CLAMP);
|
||||
mRS.samplerSet(WRAP_MODE_T, CLAMP);
|
||||
mSampler = mRS.samplerCreate();
|
||||
Sampler.Builder bs = new Sampler.Builder(mRS);
|
||||
bs.setMin(LINEAR);
|
||||
bs.setMag(LINEAR);
|
||||
bs.setWrapS(CLAMP);
|
||||
bs.setWrapT(CLAMP);
|
||||
mSampler = bs.create();
|
||||
|
||||
ProgramFragment.Builder b;
|
||||
b = new ProgramFragment.Builder(mRS, null, null);
|
||||
|
||||
@@ -26,6 +26,7 @@ import android.renderscript.Script;
|
||||
import android.renderscript.ScriptC;
|
||||
import android.renderscript.ProgramFragment;
|
||||
import android.renderscript.ProgramStore;
|
||||
import android.renderscript.Sampler;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
@@ -95,8 +96,8 @@ public class RolloRS {
|
||||
private Resources mRes;
|
||||
private RenderScript mRS;
|
||||
private Script mScript;
|
||||
private RenderScript.Sampler mSampler;
|
||||
private RenderScript.Sampler mSamplerText;
|
||||
private Sampler mSampler;
|
||||
private Sampler mSamplerText;
|
||||
private ProgramStore mPSBackground;
|
||||
private ProgramStore mPSText;
|
||||
private ProgramFragment mPFImages;
|
||||
@@ -121,27 +122,16 @@ public class RolloRS {
|
||||
private Allocation mAllocScratch;
|
||||
|
||||
private void initNamed() {
|
||||
mRS.samplerBegin();
|
||||
mRS.samplerSet(RenderScript.SamplerParam.FILTER_MIN,
|
||||
RenderScript.SamplerValue.LINEAR);//_MIP_LINEAR);
|
||||
mRS.samplerSet(RenderScript.SamplerParam.FILTER_MAG,
|
||||
RenderScript.SamplerValue.LINEAR);
|
||||
mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_S,
|
||||
RenderScript.SamplerValue.CLAMP);
|
||||
mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_T,
|
||||
RenderScript.SamplerValue.CLAMP);
|
||||
mSampler = mRS.samplerCreate();
|
||||
Sampler.Builder sb = new Sampler.Builder(mRS);
|
||||
sb.setMin(Sampler.Value.LINEAR);//_MIP_LINEAR);
|
||||
sb.setMag(Sampler.Value.LINEAR);
|
||||
sb.setWrapS(Sampler.Value.CLAMP);
|
||||
sb.setWrapT(Sampler.Value.CLAMP);
|
||||
mSampler = sb.create();
|
||||
|
||||
mRS.samplerBegin();
|
||||
mRS.samplerSet(RenderScript.SamplerParam.FILTER_MIN,
|
||||
RenderScript.SamplerValue.NEAREST);
|
||||
mRS.samplerSet(RenderScript.SamplerParam.FILTER_MAG,
|
||||
RenderScript.SamplerValue.NEAREST);
|
||||
mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_S,
|
||||
RenderScript.SamplerValue.CLAMP);
|
||||
mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_T,
|
||||
RenderScript.SamplerValue.CLAMP);
|
||||
mSamplerText = mRS.samplerCreate();
|
||||
sb.setMin(Sampler.Value.NEAREST);
|
||||
sb.setMag(Sampler.Value.NEAREST);
|
||||
mSamplerText = sb.create();
|
||||
|
||||
|
||||
ProgramFragment.Builder bf = new ProgramFragment.Builder(mRS, null, null);
|
||||
|
||||
Reference in New Issue
Block a user