diff options
author | Alex Sakhartchouk <alexst@google.com> | 2010-11-18 15:22:43 -0800 |
---|---|---|
committer | Alex Sakhartchouk <alexst@google.com> | 2010-11-18 15:27:28 -0800 |
commit | 67f2e442a31b8395e3c1951f8e91139ec7f2be99 (patch) | |
tree | 9e3001eb5181faec98ac13fa85c7915fb8c96c1a /libs/rs/java/Samples/src/com/android/samples/rsrenderstates.rs | |
parent | 3d019afcdb167a04d9c879285b448f9be1de3c67 (diff) | |
download | frameworks_base-67f2e442a31b8395e3c1951f8e91139ec7f2be99.zip frameworks_base-67f2e442a31b8395e3c1951f8e91139ec7f2be99.tar.gz frameworks_base-67f2e442a31b8395e3c1951f8e91139ec7f2be99.tar.bz2 |
Support for cubemaps.
Change-Id: Iaf6087f614451a8e233b3e5bc49c834ab0ad08ee
Diffstat (limited to 'libs/rs/java/Samples/src/com/android/samples/rsrenderstates.rs')
-rw-r--r-- | libs/rs/java/Samples/src/com/android/samples/rsrenderstates.rs | 44 |
1 files changed, 43 insertions, 1 deletions
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 f26633d..39b0834 100644 --- a/libs/rs/java/Samples/src/com/android/samples/rsrenderstates.rs +++ b/libs/rs/java/Samples/src/com/android/samples/rsrenderstates.rs @@ -19,7 +19,7 @@ #include "rs_graphics.rsh" #include "shader_def.rsh" -const int gMaxModes = 10; +const int gMaxModes = 11; rs_program_vertex gProgVertex; rs_program_fragment gProgFragmentColor; @@ -34,6 +34,7 @@ rs_allocation gTexOpaque; rs_allocation gTexTorus; rs_allocation gTexTransparent; rs_allocation gTexChecker; +rs_allocation gTexCube; rs_mesh gMbyNMesh; rs_mesh gTorusMesh; @@ -71,6 +72,8 @@ rs_program_vertex gProgVertexCustom; rs_program_fragment gProgFragmentCustom; rs_program_vertex gProgVertexCustom2; rs_program_fragment gProgFragmentCustom2; +rs_program_vertex gProgVertexCube; +rs_program_fragment gProgFragmentCube; rs_program_fragment gProgFragmentMultitex; float gDt = 0; @@ -506,6 +509,42 @@ void displayCustomShaderSamples2() { rsgDrawText("Custom shader sample with array uniforms", 10, rsgGetHeight() - 10); } +void displayCubemapShaderSample() { + // Update vertex shader constants + // Load model matrix + // Aplly a rotation to our mesh + gTorusRotation += 50.0f * gDt; + if (gTorusRotation > 360.0f) { + gTorusRotation -= 360.0f; + } + + // Position our model on the screen + // Position our model on the screen + 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); + rsAllocationMarkDirty(rsGetAllocation(gFSConstants)); + + rsgBindProgramVertex(gProgVertexCube); + + // Fragment shader with texture + rsgBindProgramStore(gProgStoreBlendNoneDepth); + rsgBindProgramFragment(gProgFragmentCube); + rsgBindSampler(gProgFragmentCube, 0, gLinearClamp); + rsgBindTexture(gProgFragmentCube, 0, gTexCube); + + // Use back face culling + rsgBindProgramRaster(gCullBack); + rsgDrawMesh(gTorusMesh); + + rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); + rsgBindFont(gFontMono); + rsgDrawText("Cubemap shader sample", 10, rsgGetHeight() - 10); +} + void displayMultitextureSample() { bindProgramVertexOrtho(); rs_matrix4x4 matrix; @@ -632,6 +671,9 @@ int root(int launchID) { case 9: displayCustomShaderSamples2(); break; + case 10: + displayCubemapShaderSample(); + break; } return 10; |