Loading tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/icon.png 0 → 100644 +7.35 KiB Loading image diff... tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Renderable.java +10 −3 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Iterator; import com.android.scenegraph.Float4Param; import com.android.scenegraph.Float4Param; import com.android.scenegraph.MatrixTransform; import com.android.scenegraph.SceneManager; import com.android.scenegraph.SceneManager; import com.android.scenegraph.ShaderParam; import com.android.scenegraph.ShaderParam; import com.android.scenegraph.TransformParam; import com.android.scenegraph.TransformParam; Loading Loading @@ -89,6 +90,10 @@ public class Renderable extends RenderableBase { mMaterialName = name; mMaterialName = name; } } public Transform getTransform() { return mTransform; } public void setTransform(Transform t) { public void setTransform(Transform t) { mTransform = t; mTransform = t; if (mField != null) { if (mField != null) { Loading Loading @@ -199,12 +204,14 @@ public class Renderable extends RenderableBase { if (mRenderState == null) { if (mRenderState == null) { mRenderState = SceneManager.getDefaultState(); mRenderState = SceneManager.getDefaultState(); } } if (mTransform == null) { mTransform = SceneManager.getDefaultTransform(); } updateVertexConstants(rs); updateVertexConstants(rs); updateFragmentConstants(rs); updateFragmentConstants(rs); if (mTransform != null) { mData.transformMatrix = mTransform.getRSData().getAllocation(); mData.transformMatrix = mTransform.getRSData().getAllocation(); } mData.name = getNameAlloc(rs); mData.name = getNameAlloc(rs); mData.render_state = mRenderState.getRSData().getAllocation(); mData.render_state = mRenderState.getRSData().getAllocation(); mData.bVolInitialized = 0; mData.bVolInitialized = 0; Loading tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java +37 −1 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,10 @@ import java.util.HashMap; import java.util.regex.Matcher; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.Pattern; import com.android.scenegraph.Camera; import com.android.scenegraph.CompoundTransform; import com.android.scenegraph.RenderPass; import com.android.scenegraph.Renderable; import com.android.scenegraph.SceneManager; import com.android.scenegraph.SceneManager; import com.android.scenegraph.TextureBase; import com.android.scenegraph.TextureBase; Loading Loading @@ -81,6 +85,18 @@ public class Scene extends SceneGraphBase { mRootTransforms.appendChild(t); mRootTransforms.appendChild(t); } } public CompoundTransform appendNewCompoundTransform() { CompoundTransform t = new CompoundTransform(); appendTransform(t); return t; } public MatrixTransform appendNewMatrixTransform() { MatrixTransform t = new MatrixTransform(); appendTransform(t); return t; } // temporary // temporary public void addToTransformMap(Transform t) { public void addToTransformMap(Transform t) { mTransformMap.put(t.getName(), t); mTransformMap.put(t.getName(), t); Loading @@ -97,6 +113,12 @@ public class Scene extends SceneGraphBase { mRenderPasses.add(p); mRenderPasses.add(p); } } public RenderPass appendNewRenderPass() { RenderPass p = new RenderPass(); appendRenderPass(p); return p; } public void clearRenderPasses() { public void clearRenderPasses() { mRenderPasses.clear(); mRenderPasses.clear(); } } Loading @@ -115,6 +137,12 @@ public class Scene extends SceneGraphBase { mCameras.add(c); mCameras.add(c); } } public Camera appendNewCamera() { Camera c = new Camera(); appendCamera(c); return c; } public void appendShader(FragmentShader f) { public void appendShader(FragmentShader f) { if (f == null) { if (f == null) { throw new RuntimeException("Adding null object"); throw new RuntimeException("Adding null object"); Loading Loading @@ -142,8 +170,16 @@ public class Scene extends SceneGraphBase { throw new RuntimeException("Adding null object"); throw new RuntimeException("Adding null object"); } } mRenderables.add(d); mRenderables.add(d); if (d.getName() != null) { mRenderableMap.put(d.getName(), d); mRenderableMap.put(d.getName(), d); } } } public Renderable appendNewRenderable() { Renderable r = new Renderable(); appendRenderable(r); return r; } public ArrayList<RenderableBase> getRenderables() { public ArrayList<RenderableBase> getRenderables() { return mRenderables; return mRenderables; Loading tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneManager.java +38 −14 Original line number Original line Diff line number Diff line Loading @@ -80,6 +80,7 @@ public class SceneManager extends SceneGraphBase { private VertexShader mDefaultVertex; private VertexShader mDefaultVertex; private RenderState mDefaultState; private RenderState mDefaultState; private Transform mDefaultTransform; private static Allocation getDefault(boolean isCube) { private static Allocation getDefault(boolean isCube) { final int dimension = 4; final int dimension = 4; Loading Loading @@ -161,24 +162,32 @@ public class SceneManager extends SceneGraphBase { return b; return b; } } public static Allocation loadCubemap(String name, RenderScriptGL rs, Resources res) { static Allocation createFromBitmap(Bitmap b, RenderScriptGL rs, boolean isCube) { Bitmap b = loadBitmap(name, res); if (b == null) { if (b == null) { return null; return null; } } return Allocation.createCubemapFromBitmap(rs, b, MipmapControl mip = MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE; MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, int usage = Allocation.USAGE_GRAPHICS_TEXTURE; Allocation.USAGE_GRAPHICS_TEXTURE); if (isCube) { return Allocation.createCubemapFromBitmap(rs, b, mip, usage); } return Allocation.createFromBitmap(rs, b, mip, usage); } public static Allocation loadCubemap(String name, RenderScriptGL rs, Resources res) { return createFromBitmap(loadBitmap(name, res), rs, true); } public static Allocation loadCubemap(int id, RenderScriptGL rs, Resources res) { return createFromBitmap(BitmapFactory.decodeResource(res, id), rs, true); } } public static Allocation loadTexture2D(String name, RenderScriptGL rs, Resources res) { public static Allocation loadTexture2D(String name, RenderScriptGL rs, Resources res) { Bitmap b = loadBitmap(name, res); return createFromBitmap(loadBitmap(name, res), rs, false); if (b == null) { return null; } } return Allocation.createFromBitmap(rs, b, Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, public static Allocation loadTexture2D(int id, RenderScriptGL rs, Resources res) { Allocation.USAGE_GRAPHICS_TEXTURE); return createFromBitmap(BitmapFactory.decodeResource(res, id), rs, false); } } public static ProgramStore BLEND_ADD_DEPTH_NONE(RenderScript rs) { public static ProgramStore BLEND_ADD_DEPTH_NONE(RenderScript rs) { Loading Loading @@ -261,6 +270,7 @@ public class SceneManager extends SceneGraphBase { } } mActiveScene.appendShader(getDefaultVS()); mActiveScene.appendShader(getDefaultVS()); mActiveScene.appendTransform(getDefaultTransform()); } } static RenderScriptGL getRS() { static RenderScriptGL getRS() { Loading Loading @@ -364,14 +374,15 @@ public class SceneManager extends SceneGraphBase { final String code = "\n" + final String code = "\n" + "varying vec2 varTex0;\n" + "varying vec2 varTex0;\n" + "void main() {\n" + "void main() {\n" + " lowp vec4 col = texture2D(UNI_Tex0, varTex0).rgba;\n" + " lowp vec4 col = texture2D(UNI_color, varTex0).rgba;\n" + " gl_FragColor = col;\n" + " gl_FragColor = col;\n" + "}\n"; "}\n"; FragmentShader.Builder fb = new FragmentShader.Builder(rs); FragmentShader.Builder fb = new FragmentShader.Builder(rs); fb.setShader(code); fb.setShader(code); fb.addTexture(Program.TextureType.TEXTURE_2D, "Tex0"); fb.addTexture(Program.TextureType.TEXTURE_2D, "color"); sSceneManager.mTexture = fb.create(); sSceneManager.mTexture = fb.create(); sSceneManager.mTexture.mProgram.bindSampler(Sampler.CLAMP_LINEAR_MIP_LINEAR(rs), 0); } } return sSceneManager.mTexture; return sSceneManager.mTexture; Loading @@ -383,10 +394,22 @@ public class SceneManager extends SceneGraphBase { } } if (sSceneManager.mDefaultState == null) { if (sSceneManager.mDefaultState == null) { sSceneManager.mDefaultState = new RenderState(getDefaultVS(), getColorFS(), null, null); sSceneManager.mDefaultState = new RenderState(getDefaultVS(), getColorFS(), null, null); sSceneManager.mDefaultState.setName("__DefaultState"); } } return sSceneManager.mDefaultState; return sSceneManager.mDefaultState; } } static Transform getDefaultTransform() { if (sSceneManager == null) { return null; } if (sSceneManager.mDefaultTransform == null) { sSceneManager.mDefaultTransform = new MatrixTransform(); sSceneManager.mDefaultTransform.setName("__DefaultTransform"); } return sSceneManager.mDefaultTransform; } public static SceneManager getInstance() { public static SceneManager getInstance() { if (sSceneManager == null) { if (sSceneManager == null) { sSceneManager = new SceneManager(); sSceneManager = new SceneManager(); Loading Loading @@ -444,6 +467,7 @@ public class SceneManager extends SceneGraphBase { mColor = null; mColor = null; mTexture = null; mTexture = null; mDefaultState = null; mDefaultState = null; mDefaultTransform = null; mExportScript = new ScriptC_export(rs, res, R.raw.export); mExportScript = new ScriptC_export(rs, res, R.raw.export); Loading tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Texture2D.java +18 −2 Original line number Original line Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.util.Log; public class Texture2D extends TextureBase { public class Texture2D extends TextureBase { String mFileName; String mFileName; String mFileDir; String mFileDir; int mResourceID; public Texture2D() { public Texture2D() { super(ScriptC_export.const_TextureType_TEXTURE_2D); super(ScriptC_export.const_TextureType_TEXTURE_2D); Loading @@ -40,6 +41,17 @@ public class Texture2D extends TextureBase { setTexture(tex); setTexture(tex); } } public Texture2D(String dir, String file) { super(ScriptC_export.const_TextureType_TEXTURE_CUBE); setFileDir(dir); setFileName(file); } public Texture2D(int resourceID) { super(ScriptC_export.const_TextureType_TEXTURE_2D); mResourceID = resourceID; } public void setFileDir(String dir) { public void setFileDir(String dir) { mFileDir = dir; mFileDir = dir; } } Loading @@ -62,8 +74,12 @@ public class Texture2D extends TextureBase { void load() { void load() { RenderScriptGL rs = SceneManager.getRS(); RenderScriptGL rs = SceneManager.getRS(); Resources res = SceneManager.getRes(); Resources res = SceneManager.getRes(); if (mFileName != null && mFileName.length() > 0) { String shortName = mFileName.substring(mFileName.lastIndexOf('/') + 1); String shortName = mFileName.substring(mFileName.lastIndexOf('/') + 1); setTexture(SceneManager.loadTexture2D(mFileDir + shortName, rs, res)); setTexture(SceneManager.loadTexture2D(mFileDir + shortName, rs, res)); } else if (mResourceID != 0) { setTexture(SceneManager.loadTexture2D(mResourceID, rs, res)); } } } ScriptField_Texture_s getRsData(boolean loadNow) { ScriptField_Texture_s getRsData(boolean loadNow) { Loading Loading
tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/icon.png 0 → 100644 +7.35 KiB Loading image diff...
tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Renderable.java +10 −3 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Iterator; import com.android.scenegraph.Float4Param; import com.android.scenegraph.Float4Param; import com.android.scenegraph.MatrixTransform; import com.android.scenegraph.SceneManager; import com.android.scenegraph.SceneManager; import com.android.scenegraph.ShaderParam; import com.android.scenegraph.ShaderParam; import com.android.scenegraph.TransformParam; import com.android.scenegraph.TransformParam; Loading Loading @@ -89,6 +90,10 @@ public class Renderable extends RenderableBase { mMaterialName = name; mMaterialName = name; } } public Transform getTransform() { return mTransform; } public void setTransform(Transform t) { public void setTransform(Transform t) { mTransform = t; mTransform = t; if (mField != null) { if (mField != null) { Loading Loading @@ -199,12 +204,14 @@ public class Renderable extends RenderableBase { if (mRenderState == null) { if (mRenderState == null) { mRenderState = SceneManager.getDefaultState(); mRenderState = SceneManager.getDefaultState(); } } if (mTransform == null) { mTransform = SceneManager.getDefaultTransform(); } updateVertexConstants(rs); updateVertexConstants(rs); updateFragmentConstants(rs); updateFragmentConstants(rs); if (mTransform != null) { mData.transformMatrix = mTransform.getRSData().getAllocation(); mData.transformMatrix = mTransform.getRSData().getAllocation(); } mData.name = getNameAlloc(rs); mData.name = getNameAlloc(rs); mData.render_state = mRenderState.getRSData().getAllocation(); mData.render_state = mRenderState.getRSData().getAllocation(); mData.bVolInitialized = 0; mData.bVolInitialized = 0; Loading
tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java +37 −1 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,10 @@ import java.util.HashMap; import java.util.regex.Matcher; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.Pattern; import com.android.scenegraph.Camera; import com.android.scenegraph.CompoundTransform; import com.android.scenegraph.RenderPass; import com.android.scenegraph.Renderable; import com.android.scenegraph.SceneManager; import com.android.scenegraph.SceneManager; import com.android.scenegraph.TextureBase; import com.android.scenegraph.TextureBase; Loading Loading @@ -81,6 +85,18 @@ public class Scene extends SceneGraphBase { mRootTransforms.appendChild(t); mRootTransforms.appendChild(t); } } public CompoundTransform appendNewCompoundTransform() { CompoundTransform t = new CompoundTransform(); appendTransform(t); return t; } public MatrixTransform appendNewMatrixTransform() { MatrixTransform t = new MatrixTransform(); appendTransform(t); return t; } // temporary // temporary public void addToTransformMap(Transform t) { public void addToTransformMap(Transform t) { mTransformMap.put(t.getName(), t); mTransformMap.put(t.getName(), t); Loading @@ -97,6 +113,12 @@ public class Scene extends SceneGraphBase { mRenderPasses.add(p); mRenderPasses.add(p); } } public RenderPass appendNewRenderPass() { RenderPass p = new RenderPass(); appendRenderPass(p); return p; } public void clearRenderPasses() { public void clearRenderPasses() { mRenderPasses.clear(); mRenderPasses.clear(); } } Loading @@ -115,6 +137,12 @@ public class Scene extends SceneGraphBase { mCameras.add(c); mCameras.add(c); } } public Camera appendNewCamera() { Camera c = new Camera(); appendCamera(c); return c; } public void appendShader(FragmentShader f) { public void appendShader(FragmentShader f) { if (f == null) { if (f == null) { throw new RuntimeException("Adding null object"); throw new RuntimeException("Adding null object"); Loading Loading @@ -142,8 +170,16 @@ public class Scene extends SceneGraphBase { throw new RuntimeException("Adding null object"); throw new RuntimeException("Adding null object"); } } mRenderables.add(d); mRenderables.add(d); if (d.getName() != null) { mRenderableMap.put(d.getName(), d); mRenderableMap.put(d.getName(), d); } } } public Renderable appendNewRenderable() { Renderable r = new Renderable(); appendRenderable(r); return r; } public ArrayList<RenderableBase> getRenderables() { public ArrayList<RenderableBase> getRenderables() { return mRenderables; return mRenderables; Loading
tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneManager.java +38 −14 Original line number Original line Diff line number Diff line Loading @@ -80,6 +80,7 @@ public class SceneManager extends SceneGraphBase { private VertexShader mDefaultVertex; private VertexShader mDefaultVertex; private RenderState mDefaultState; private RenderState mDefaultState; private Transform mDefaultTransform; private static Allocation getDefault(boolean isCube) { private static Allocation getDefault(boolean isCube) { final int dimension = 4; final int dimension = 4; Loading Loading @@ -161,24 +162,32 @@ public class SceneManager extends SceneGraphBase { return b; return b; } } public static Allocation loadCubemap(String name, RenderScriptGL rs, Resources res) { static Allocation createFromBitmap(Bitmap b, RenderScriptGL rs, boolean isCube) { Bitmap b = loadBitmap(name, res); if (b == null) { if (b == null) { return null; return null; } } return Allocation.createCubemapFromBitmap(rs, b, MipmapControl mip = MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE; MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, int usage = Allocation.USAGE_GRAPHICS_TEXTURE; Allocation.USAGE_GRAPHICS_TEXTURE); if (isCube) { return Allocation.createCubemapFromBitmap(rs, b, mip, usage); } return Allocation.createFromBitmap(rs, b, mip, usage); } public static Allocation loadCubemap(String name, RenderScriptGL rs, Resources res) { return createFromBitmap(loadBitmap(name, res), rs, true); } public static Allocation loadCubemap(int id, RenderScriptGL rs, Resources res) { return createFromBitmap(BitmapFactory.decodeResource(res, id), rs, true); } } public static Allocation loadTexture2D(String name, RenderScriptGL rs, Resources res) { public static Allocation loadTexture2D(String name, RenderScriptGL rs, Resources res) { Bitmap b = loadBitmap(name, res); return createFromBitmap(loadBitmap(name, res), rs, false); if (b == null) { return null; } } return Allocation.createFromBitmap(rs, b, Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, public static Allocation loadTexture2D(int id, RenderScriptGL rs, Resources res) { Allocation.USAGE_GRAPHICS_TEXTURE); return createFromBitmap(BitmapFactory.decodeResource(res, id), rs, false); } } public static ProgramStore BLEND_ADD_DEPTH_NONE(RenderScript rs) { public static ProgramStore BLEND_ADD_DEPTH_NONE(RenderScript rs) { Loading Loading @@ -261,6 +270,7 @@ public class SceneManager extends SceneGraphBase { } } mActiveScene.appendShader(getDefaultVS()); mActiveScene.appendShader(getDefaultVS()); mActiveScene.appendTransform(getDefaultTransform()); } } static RenderScriptGL getRS() { static RenderScriptGL getRS() { Loading Loading @@ -364,14 +374,15 @@ public class SceneManager extends SceneGraphBase { final String code = "\n" + final String code = "\n" + "varying vec2 varTex0;\n" + "varying vec2 varTex0;\n" + "void main() {\n" + "void main() {\n" + " lowp vec4 col = texture2D(UNI_Tex0, varTex0).rgba;\n" + " lowp vec4 col = texture2D(UNI_color, varTex0).rgba;\n" + " gl_FragColor = col;\n" + " gl_FragColor = col;\n" + "}\n"; "}\n"; FragmentShader.Builder fb = new FragmentShader.Builder(rs); FragmentShader.Builder fb = new FragmentShader.Builder(rs); fb.setShader(code); fb.setShader(code); fb.addTexture(Program.TextureType.TEXTURE_2D, "Tex0"); fb.addTexture(Program.TextureType.TEXTURE_2D, "color"); sSceneManager.mTexture = fb.create(); sSceneManager.mTexture = fb.create(); sSceneManager.mTexture.mProgram.bindSampler(Sampler.CLAMP_LINEAR_MIP_LINEAR(rs), 0); } } return sSceneManager.mTexture; return sSceneManager.mTexture; Loading @@ -383,10 +394,22 @@ public class SceneManager extends SceneGraphBase { } } if (sSceneManager.mDefaultState == null) { if (sSceneManager.mDefaultState == null) { sSceneManager.mDefaultState = new RenderState(getDefaultVS(), getColorFS(), null, null); sSceneManager.mDefaultState = new RenderState(getDefaultVS(), getColorFS(), null, null); sSceneManager.mDefaultState.setName("__DefaultState"); } } return sSceneManager.mDefaultState; return sSceneManager.mDefaultState; } } static Transform getDefaultTransform() { if (sSceneManager == null) { return null; } if (sSceneManager.mDefaultTransform == null) { sSceneManager.mDefaultTransform = new MatrixTransform(); sSceneManager.mDefaultTransform.setName("__DefaultTransform"); } return sSceneManager.mDefaultTransform; } public static SceneManager getInstance() { public static SceneManager getInstance() { if (sSceneManager == null) { if (sSceneManager == null) { sSceneManager = new SceneManager(); sSceneManager = new SceneManager(); Loading Loading @@ -444,6 +467,7 @@ public class SceneManager extends SceneGraphBase { mColor = null; mColor = null; mTexture = null; mTexture = null; mDefaultState = null; mDefaultState = null; mDefaultTransform = null; mExportScript = new ScriptC_export(rs, res, R.raw.export); mExportScript = new ScriptC_export(rs, res, R.raw.export); Loading
tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Texture2D.java +18 −2 Original line number Original line Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.util.Log; public class Texture2D extends TextureBase { public class Texture2D extends TextureBase { String mFileName; String mFileName; String mFileDir; String mFileDir; int mResourceID; public Texture2D() { public Texture2D() { super(ScriptC_export.const_TextureType_TEXTURE_2D); super(ScriptC_export.const_TextureType_TEXTURE_2D); Loading @@ -40,6 +41,17 @@ public class Texture2D extends TextureBase { setTexture(tex); setTexture(tex); } } public Texture2D(String dir, String file) { super(ScriptC_export.const_TextureType_TEXTURE_CUBE); setFileDir(dir); setFileName(file); } public Texture2D(int resourceID) { super(ScriptC_export.const_TextureType_TEXTURE_2D); mResourceID = resourceID; } public void setFileDir(String dir) { public void setFileDir(String dir) { mFileDir = dir; mFileDir = dir; } } Loading @@ -62,8 +74,12 @@ public class Texture2D extends TextureBase { void load() { void load() { RenderScriptGL rs = SceneManager.getRS(); RenderScriptGL rs = SceneManager.getRS(); Resources res = SceneManager.getRes(); Resources res = SceneManager.getRes(); if (mFileName != null && mFileName.length() > 0) { String shortName = mFileName.substring(mFileName.lastIndexOf('/') + 1); String shortName = mFileName.substring(mFileName.lastIndexOf('/') + 1); setTexture(SceneManager.loadTexture2D(mFileDir + shortName, rs, res)); setTexture(SceneManager.loadTexture2D(mFileDir + shortName, rs, res)); } else if (mResourceID != 0) { setTexture(SceneManager.loadTexture2D(mResourceID, rs, res)); } } } ScriptField_Texture_s getRsData(boolean loadNow) { ScriptField_Texture_s getRsData(boolean loadNow) { Loading