From 355707e4f665904e31d9f5fcff1e3921f7db8cdd Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Tue, 17 Dec 2013 13:28:17 -0800 Subject: Move RenderScript from graphics/ to new fw/base subdirectory rs. Change-Id: I30b6633578f063840e1bdbcc9ba513b727912a6d --- .../renderscript/ProgramFragmentFixedFunction.java | 335 +++++++++++++++++++++ 1 file changed, 335 insertions(+) create mode 100644 rs/java/android/renderscript/ProgramFragmentFixedFunction.java (limited to 'rs/java/android/renderscript/ProgramFragmentFixedFunction.java') diff --git a/rs/java/android/renderscript/ProgramFragmentFixedFunction.java b/rs/java/android/renderscript/ProgramFragmentFixedFunction.java new file mode 100644 index 000000000000..22aed0a14e95 --- /dev/null +++ b/rs/java/android/renderscript/ProgramFragmentFixedFunction.java @@ -0,0 +1,335 @@ +/* + * Copyright (C) 2008-2012 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 android.util.Log; + + +/** + * @hide + * @deprecated in API 16 + *

ProgramFragmentFixedFunction is a helper class that provides + * a way to make a simple fragment shader without writing any + * GLSL code. This class allows for display of constant color, interpolated + * color from the vertex shader, or combinations of the both + * blended with results of up to two texture lookups.

= MAX_TEXTURE)) { + throw new IllegalArgumentException("MAX_TEXTURE exceeded."); + } + mSlots[slot] = new Slot(env, fmt); + return this; + } + + /** + * @deprecated in API 16 + * Specifies whether the texture coordinate passed from the + * vertex program is replaced with an openGL internal point + * sprite texture coordinate + * + **/ + public Builder setPointSpriteTexCoordinateReplacement(boolean enable) { + mPointSpriteEnable = enable; + return this; + } + + /** + * @deprecated in API 16 + * Specifies whether the varying color passed from the vertex + * program or the constant color set on the fragment program is + * used in the final color calculation in the fixed function + * fragment shader + * + **/ + public Builder setVaryingColor(boolean enable) { + mVaryingColorEnable = enable; + return this; + } + + /** + * @deprecated in API 16 + * Creates the fixed function fragment program from the current + * state of the builder. + * + */ + public ProgramFragmentFixedFunction create() { + InternalBuilder sb = new InternalBuilder(mRS); + mNumTextures = 0; + for(int i = 0; i < MAX_TEXTURE; i ++) { + if(mSlots[i] != null) { + mNumTextures ++; + } + } + buildShaderString(); + sb.setShader(mShader); + + Type constType = null; + if (!mVaryingColorEnable) { + Element.Builder b = new Element.Builder(mRS); + b.add(Element.F32_4(mRS), "Color"); + Type.Builder typeBuilder = new Type.Builder(mRS, b.create()); + typeBuilder.setX(1); + constType = typeBuilder.create(); + sb.addConstant(constType); + } + for (int i = 0; i < mNumTextures; i ++) { + sb.addTexture(TextureType.TEXTURE_2D); + } + + ProgramFragmentFixedFunction pf = sb.create(); + pf.mTextureCount = MAX_TEXTURE; + if (!mVaryingColorEnable) { + Allocation constantData = Allocation.createTyped(mRS,constType); + FieldPacker fp = new FieldPacker(16); + Float4 f4 = new Float4(1.f, 1.f, 1.f, 1.f); + fp.addF32(f4); + constantData.setFromFieldPacker(0, fp); + pf.bindConstants(constantData, 0); + } + return pf; + } + } +} + + + + -- cgit v1.2.3