Merge change 20046

* changes:
  Seperate Light and Sampler from RenderScript.java
This commit is contained in:
Android (Google) Code Review
2009-08-04 18:00:01 -07:00
8 changed files with 234 additions and 161 deletions

View 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);
}
}
}

View File

@@ -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);
}

View File

@@ -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

View 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);
}
}
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);