diff options
| author | Alex Sakhartchouk <alexst@google.com> | 2010-09-14 09:50:43 -0700 |
|---|---|---|
| committer | Alex Sakhartchouk <alexst@google.com> | 2010-09-14 09:50:43 -0700 |
| commit | c984dd73c6f96d16e11813ae433ef70f7648ae77 (patch) | |
| tree | a40cb9dc5d1b3020e4cf33f575714e72ef3e805f /libs/rs/java/Samples | |
| parent | bcd3387eed8910c540d92f26fb6680e9e0ce0588 (diff) | |
| download | frameworks_base-c984dd73c6f96d16e11813ae433ef70f7648ae77.zip frameworks_base-c984dd73c6f96d16e11813ae433ef70f7648ae77.tar.gz frameworks_base-c984dd73c6f96d16e11813ae433ef70f7648ae77.tar.bz2 | |
Shader changes to allow for more flexible constant binding.
Change-Id: Ic66e6e2a371c6e3d5dce1b00f63acab8c09bd110
Diffstat (limited to 'libs/rs/java/Samples')
5 files changed, 12 insertions, 28 deletions
diff --git a/libs/rs/java/Samples/res/raw/shaderf.glsl b/libs/rs/java/Samples/res/raw/shaderf.glsl index fdcf481..fcbe7ee 100644 --- a/libs/rs/java/Samples/res/raw/shaderf.glsl +++ b/libs/rs/java/Samples/res/raw/shaderf.glsl @@ -3,10 +3,11 @@ varying lowp float light0_Diffuse; varying lowp float light0_Specular; varying lowp float light1_Diffuse; varying lowp float light1_Specular; +varying vec2 varTex0; void main() { vec2 t0 = varTex0.xy; - lowp vec4 col = texture2D(uni_Tex0, t0).rgba; + lowp vec4 col = texture2D(UNI_Tex0, t0).rgba; col.xyz = col.xyz * (light0_Diffuse * UNI_light0_DiffuseColor + light1_Diffuse * UNI_light1_DiffuseColor); col.xyz += light0_Specular * UNI_light0_SpecularColor; col.xyz += light1_Specular * UNI_light1_SpecularColor; diff --git a/libs/rs/java/Samples/res/raw/shaderv.glsl b/libs/rs/java/Samples/res/raw/shaderv.glsl index 7f61197..867589c 100644 --- a/libs/rs/java/Samples/res/raw/shaderv.glsl +++ b/libs/rs/java/Samples/res/raw/shaderv.glsl @@ -2,24 +2,12 @@ varying float light0_Diffuse; varying float light0_Specular; varying float light1_Diffuse; varying float light1_Specular; - -/* -rs_matrix4x4 model; - float3 light0_Posision; - float light0_Diffuse; - float light0_Specular; - float light0_CosinePower; - - float3 light1_Posision; - float light1_Diffuse; - float light1_Specular; - float light1_CosinePower; -*/ +varying vec2 varTex0; // This is where actual shader code begins void main() { vec4 worldPos = UNI_model * ATTRIB_position; - gl_Position = UNI_MVP * worldPos; + gl_Position = UNI_proj * worldPos; mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz); vec3 worldNorm = model3 * ATTRIB_normal; diff --git a/libs/rs/java/Samples/src/com/android/samples/RsRenderStatesRS.java b/libs/rs/java/Samples/src/com/android/samples/RsRenderStatesRS.java index e76e740..d920527 100644 --- a/libs/rs/java/Samples/src/com/android/samples/RsRenderStatesRS.java +++ b/libs/rs/java/Samples/src/com/android/samples/RsRenderStatesRS.java @@ -67,7 +67,6 @@ public class RsRenderStatesRS { // Custom shaders private ProgramVertex mProgVertexCustom; - private ProgramVertex.MatrixAllocation mPVACustom; private ProgramFragment mProgFragmentCustom; private ScriptField_VertexShaderConstants_s mVSConst; private ScriptField_FragentShaderConstants_s mFSConst; @@ -202,9 +201,7 @@ public class RsRenderStatesRS { pvbCustom.addConstant(mVSConst.getAllocation().getType()); mProgVertexCustom = pvbCustom.create(); // Bind the source of constant data - mProgVertexCustom.bindConstants(mVSConst.getAllocation(), 1); - mPVACustom = new ProgramVertex.MatrixAllocation(mRS); - mProgVertexCustom.bindAllocation(mPVACustom); + mProgVertexCustom.bindConstants(mVSConst.getAllocation(), 0); ProgramFragment.ShaderBuilder pfbCustom = new ProgramFragment.ShaderBuilder(mRS); // Specify the resource that contains the shader string @@ -215,7 +212,7 @@ public class RsRenderStatesRS { pfbCustom.addConstant(mFSConst.getAllocation().getType()); mProgFragmentCustom = pfbCustom.create(); // Bind the source of constant data - mProgFragmentCustom.bindConstants(mFSConst.getAllocation(), 1); + mProgFragmentCustom.bindConstants(mFSConst.getAllocation(), 0); mScript.set_gProgVertexCustom(mProgVertexCustom); mScript.set_gProgFragmentCustom(mProgFragmentCustom); diff --git a/libs/rs/java/Samples/src/com/android/samples/rsrenderstates.rs b/libs/rs/java/Samples/src/com/android/samples/rsrenderstates.rs index 4bcf7f5..c7bea93 100644 --- a/libs/rs/java/Samples/src/com/android/samples/rsrenderstates.rs +++ b/libs/rs/java/Samples/src/com/android/samples/rsrenderstates.rs @@ -395,14 +395,12 @@ void displayCustomShaderSamples() { rsMatrixLoadTranslate(&gVSConstants->model, 0.0f, 0.0f, -10.0f); rsMatrixRotate(&gVSConstants->model, gTorusRotation, 1.0f, 0.0f, 0.0f); rsMatrixRotate(&gVSConstants->model, gTorusRotation, 0.0f, 0.0f, 1.0f); + // Setup the projectioni matrix + float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); + rsMatrixLoadPerspective(&gVSConstants->proj, 30.0f, aspect, 0.1f, 100.0f); setupCustomShaderLights(); rsgBindProgramVertex(gProgVertexCustom); - // Setup the projectioni matrix with 60 degree field of view - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); // Fragment shader with texture rsgBindProgramStore(gProgStoreBlendNoneDepth); @@ -416,7 +414,7 @@ void displayCustomShaderSamples() { rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); rsgBindFont(gFontMono); - rsgDrawText("Custom shader sample", 10, rsgGetHeight() - 10); + //rsgDrawText("Custom shader sample", 10, rsgGetHeight() - 10); } int root(int launchID) { diff --git a/libs/rs/java/Samples/src/com/android/samples/shader_def.rsh b/libs/rs/java/Samples/src/com/android/samples/shader_def.rsh index 1b697ca..e3f6206 100644 --- a/libs/rs/java/Samples/src/com/android/samples/shader_def.rsh +++ b/libs/rs/java/Samples/src/com/android/samples/shader_def.rsh @@ -18,6 +18,7 @@ typedef struct VertexShaderConstants_s { rs_matrix4x4 model; + rs_matrix4x4 proj; float3 light0_Posision; float light0_Diffuse; float light0_Specular; @@ -27,7 +28,6 @@ typedef struct VertexShaderConstants_s { float light1_Diffuse; float light1_Specular; float light1_CosinePower; - } VertexShaderConstants; typedef struct FragentShaderConstants_s { @@ -42,6 +42,6 @@ typedef struct FragentShaderConstants_s { typedef struct VertexShaderInputs_s { float4 position; float3 normal; - float4 texture0; + float2 texture0; } VertexShaderInputs; |
