diff options
Diffstat (limited to 'third_party/gles2_book/Chapter_13/PerFragmentLighting/PerFragmentLighting.rfx')
-rw-r--r-- | third_party/gles2_book/Chapter_13/PerFragmentLighting/PerFragmentLighting.rfx | 1137 |
1 files changed, 1137 insertions, 0 deletions
diff --git a/third_party/gles2_book/Chapter_13/PerFragmentLighting/PerFragmentLighting.rfx b/third_party/gles2_book/Chapter_13/PerFragmentLighting/PerFragmentLighting.rfx new file mode 100644 index 0000000..58c3b9f --- /dev/null +++ b/third_party/gles2_book/Chapter_13/PerFragmentLighting/PerFragmentLighting.rfx @@ -0,0 +1,1137 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!DOCTYPE RENDER_MONKEY [ + <!ELEMENT RENDER_MONKEY + ( + RmEffectWorkspace | + RmRegistryBranch | + RmClipboardNode + )?> + + <!ELEMENT RmEffectWorkspace + ( + RmRegistryBranch?, + RmPlugInData?, + RmStringVariable*, + ( + ( RmDirectXEffect, RmOpenGLEffect?, RmOpenGLESEffect? ) | + ( RmOpenGLEffect, RmDirectXEffect?, RmOpenGLESEffect? ) | + ( RmOpenGLESEffect, RmDirectXEffect?, RmOpenGLEffect? ) + )?, + ( + RmBooleanVariable | + RmIntegerVariable | + RmFloatVariable | + RmVectorVariable | + RmMatrixVariable | + RmDynamicVariable | + RmColorVariable | + Rm2DTextureVariable | + RmCubemapVariable | + Rm3DTextureVariable | + RmLightVariable | + RmMaterialVariable | + RmRenderableTexture | + RmStreamMap | + RmModelData | + RmEffectGroup + )* + )> + + <!ELEMENT RmEffectGroup + ( + RmPlugInData?, + ( + RmStringVariable | + RmDirectXEffect | + RmOpenGLEffect | + RmOpenGLESEffect | + RmBooleanVariable | + RmIntegerVariable | + RmFloatVariable | + RmVectorVariable | + RmMatrixVariable | + RmDynamicVariable | + RmColorVariable | + Rm2DTextureVariable | + RmCubemapVariable | + Rm3DTextureVariable | + RmLightVariable | + RmMaterialVariable | + RmRenderableTexture | + RmStreamMap | + RmModelData + )* + )> + + <!ELEMENT RmDirectXEffect + ( + RmPlugInData?, + ( + RmStringVariable | + RmCamera | + RmBooleanVariable | + RmIntegerVariable | + RmFloatVariable | + RmVectorVariable | + RmMatrixVariable | + RmDynamicVariable | + RmColorVariable | + Rm2DTextureVariable | + RmCubemapVariable | + Rm3DTextureVariable | + RmLightVariable | + RmMaterialVariable | + RmRenderableTexture | + RmStreamMap | + RmModelData | + RmPass + )* + )> + + <!ELEMENT RmOpenGLEffect + ( + RmPlugInData?, + ( + RmStringVariable | + RmCamera | + RmBooleanVariable | + RmIntegerVariable | + RmFloatVariable | + RmVectorVariable | + RmMatrixVariable | + RmDynamicVariable | + RmColorVariable | + Rm2DTextureVariable | + RmCubemapVariable | + Rm3DTextureVariable | + RmLightVariable | + RmMaterialVariable | + RmRenderableTexture | + RmStreamMap | + RmModelData | + RmGLPass + )* + )> + + <!ELEMENT RmOpenGLESEffect + ( + RmPlugInData?, + ( + RmStringVariable | + RmCamera | + RmBooleanVariable | + RmIntegerVariable | + RmFloatVariable | + RmVectorVariable | + RmMatrixVariable | + RmDynamicVariable | + RmColorVariable | + Rm2DTextureVariable | + RmCubemapVariable | + Rm3DTextureVariable | + RmLightVariable | + RmMaterialVariable | + RmRenderableTexture | + RmStreamMap | + RmModelData | + RmGLESPass + )* + )> + + <!ELEMENT RmPass + ( + RmPlugInData?, + RmStringVariable*, + RmCameraReference?, + RmModelReference?, + RmRenderStateBlock?, + ( + ( + ( RmHLSLShader | RmShader ), + ( RmShader | RmHLSLShader )? + ) + )?, + RmRenderTarget*, + RmStreamMapReference?, + ( + RmBooleanVariable | + RmIntegerVariable | + RmFloatVariable | + RmVectorVariable | + RmMatrixVariable | + RmDynamicVariable | + RmColorVariable | + Rm2DTextureVariable | + RmCubemapVariable | + Rm3DTextureVariable | + RmLightVariable | + RmMaterialVariable | + RmTextureObject | + RmLightObject | + RmMaterialObject + )* + )> + + <!ELEMENT RmGLPass + ( + RmPlugInData?, + RmStringVariable*, + RmCameraReference?, + RmModelReference?, + RmRenderStateBlock?, + ( + ( RmGLShader, RmGLShader? ) + )?, + RmRenderTarget?, + RmStreamMapReference?, + ( + RmBooleanVariable | + RmIntegerVariable | + RmFloatVariable | + RmVectorVariable | + RmMatrixVariable | + RmDynamicVariable | + RmColorVariable | + Rm2DTextureVariable | + RmCubemapVariable | + Rm3DTextureVariable | + RmLightVariable | + RmMaterialVariable | + RmTextureObject | + RmLightObject | + RmMaterialObject | + RmShaderConstant | + RmSampler + )* + )> + + <!ELEMENT RmGLESPass + ( + RmPlugInData?, + RmStringVariable*, + RmCameraReference?, + RmModelReference?, + RmRenderStateBlock?, + ( + ( RmGLESShader, RmGLESShader? ) + )?, + RmRenderTarget?, + RmStreamMapReference?, + ( + RmBooleanVariable | + RmIntegerVariable | + RmFloatVariable | + RmVectorVariable | + RmMatrixVariable | + RmDynamicVariable | + RmColorVariable | + Rm2DTextureVariable | + RmCubemapVariable | + Rm3DTextureVariable | + RmLightVariable | + RmMaterialVariable | + RmTextureObject | + RmLightObject | + RmMaterialObject | + RmShaderConstant | + RmSampler + )* + )> + + <!ELEMENT RmShader + ( + RmShaderCode, + RmPlugInData?, + ( + RmStringVariable | + RmShaderConstant + )* + )> + + <!ELEMENT RmHLSLShader + ( + RmShaderCode, + RmPlugInData?, + ( + RmStringVariable | + RmShaderConstant | + RmSampler + )* + )> + + <!ELEMENT RmGLShader + ( + RmShaderCode, + RmPlugInData?, + ( + RmStringVariable + )* + )> + + <!ELEMENT RmGLESShader + ( + RmShaderCode, + RmPlugInData?, + ( + RmStringVariable + )* + )> + + <!ELEMENT RmTextureObject + ( + RmPlugInData?, + RmStringVariable*, + RmTextureReference?, + RmState* + )> + + <!ELEMENT RmLightObject + ( + RmPlugInData?, + RmStringVariable*, + RmLightReference? + )> + + <!ELEMENT RmMaterialObject + ( + RmPlugInData?, + RmStringVariable*, + RmMaterialReference? + )> + + <!ELEMENT RmRenderStateBlock + ( + RmPlugInData?, + ( + RmStringVariable | + RmState + )* + )> + + <!ELEMENT RmStreamMap + ( + RmPlugInData?, + ( + RmStringVariable | + RmStream + )* + )> + + <!ELEMENT RmStream ( RmPlugInData?, RmStreamChannel* )> + + <!ELEMENT RmModelData ( RmPlugInData?, RmStringVariable* )> + <!ELEMENT RmTextureReference ( RmPlugInData?, RmStringVariable* )> + <!ELEMENT RmLightReference ( RmPlugInData?, RmStringVariable* )> + <!ELEMENT RmMaterialReference ( RmPlugInData?, RmStringVariable* )> + <!ELEMENT RmCameraReference ( RmPlugInData?, RmStringVariable* )> + <!ELEMENT RmModelReference ( RmPlugInData?, RmStringVariable* )> + <!ELEMENT RmStreamMapReference ( RmPlugInData?, RmStringVariable* )> + <!ELEMENT RmRenderableTexture ( RmPlugInData?, RmStringVariable* )> + <!ELEMENT RmRenderTarget ( RmPlugInData?, RmStringVariable* )> + <!ELEMENT RmBooleanVariable ( RmPlugInData?, RmStringVariable? )> + <!ELEMENT RmFloatVariable ( RmPlugInData?, RmStringVariable? )> + <!ELEMENT RmVectorVariable ( RmPlugInData?, RmStringVariable? )> + <!ELEMENT RmMatrixVariable ( RmPlugInData?, RmStringVariable? )> + <!ELEMENT RmColorVariable ( RmPlugInData?, RmStringVariable? )> + <!ELEMENT RmIntegerVariable ( RmPlugInData?, RmStringVariable? )> + <!ELEMENT Rm2DTextureVariable ( RmPlugInData?, RmStringVariable? )> + <!ELEMENT RmCubemapVariable ( RmPlugInData?, RmStringVariable? )> + <!ELEMENT Rm3DTextureVariable ( RmPlugInData?, RmStringVariable? )> + <!ELEMENT RmLightVariable ( RmPlugInData?, RmStringVariable? )> + <!ELEMENT RmMaterialVariable ( RmPlugInData?, RmStringVariable? )> + <!ELEMENT RmCamera ( RmPlugInData?, RmStringVariable* )> + + <!ELEMENT RmStringVariable ( RmTextDataBlock, RmPlugInData? )> + + <!ELEMENT RmDynamicVariable + ( + RmDynamicVariableValueContainer, + RmPlugInData?, + RmStringVariable? + )> + + <!ELEMENT RmDynamicVariableValueContainer + ( + RmPlugInData?, + RmDynamicVariableValue* + )> + + <!ELEMENT RmTextDataBlock ( #PCDATA ) > + + <!ELEMENT RmRegistryBranch + ( + RmTextDataBlock?, + ( + RmRegistryBranch | + RmStringVariable | + RmIntegerVariable | + RmBooleanVariable | + RmFloatVariable + )* + )> + + <!ELEMENT RmPlugInData + ( + RmTextDataBlock?, + ( + RmStringVariable | + RmIntegerVariable | + RmBooleanVariable | + RmFloatVariable | + RmVectorVariable + )* + )> + + <!ELEMENT RmClipboardNode + ( + RmTextDataBlock?, + ( + RmEffectWorkspace | + RmEffectGroup | + RmDirectXEffect | + RmOpenGLEffect | + RmOpenGLESEffect | + RmPass | + RmGLPass | + RmGLESPass | + RmShader | + RmHLSLShader | + RmGLShader | + RmGLESShader | + RmShaderConstant | + RmSampler | + RmTextureObject | + RmLightObject | + RmMaterialObject | + RmRenderStateBlock | + RmState | + RmStreamMap | + RmStream | + RmStreamChannel | + RmModelData | + RmTextureReference | + RmLightReference | + RmMaterialReference | + RmModelReference | + RmStreamMapReference | + RmRenderableTexture | + RmRenderTarget | + RmBooleanVariable | + RmFloatVariable | + RmVectorVariable | + RmMatrixVariable | + RmDynamicVariable | + RmDynamicVariableValue | + RmColorVariable | + RmIntegerVariable | + RmStringVariable | + Rm2DTextureVariable | + RmCubemapVariable | + Rm3DTextureVariable | + RmLightVariable | + RmMaterialVariable | + RmRegistryBranch | + RmPlugInData | + RmCamera | + RmCameraReference + )* + )> + + <!ELEMENT RmStreamChannel ( RmPlugInData? ) > + <!ELEMENT RmShaderConstant ( RmPlugInData? ) > + <!ELEMENT RmSampler ( RmPlugInData? ) > + <!ELEMENT RmState ( RmPlugInData? ) > + <!ELEMENT RmDynamicVariableValue ( RmPlugInData? ) > + + <!ELEMENT RmShaderCode ( #PCDATA ) > + + <!ATTLIST RmEffectWorkspace + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ACTIVE_EFFECT CDATA #REQUIRED + VALIDATION_STRING CDATA #REQUIRED + XML_VERSION CDATA #REQUIRED + > + + <!ATTLIST RmEffectGroup + NAME CDATA #REQUIRED + API CDATA #REQUIRED + > + + <!ATTLIST RmDirectXEffect + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ACTIVE_CAMERA CDATA #REQUIRED + > + + <!ATTLIST RmOpenGLEffect + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ACTIVE_CAMERA CDATA #REQUIRED + > + + <!ATTLIST RmOpenGLESEffect + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ACTIVE_CAMERA CDATA #REQUIRED + > + + <!ATTLIST RmPass + NAME CDATA #REQUIRED + API CDATA #REQUIRED + PASS_INDEX CDATA #REQUIRED + ENABLED ( TRUE | FALSE ) #REQUIRED + > + + <!ATTLIST RmGLPass + NAME CDATA #REQUIRED + API CDATA #REQUIRED + PASS_INDEX CDATA #REQUIRED + ENABLED ( TRUE | FALSE ) #REQUIRED + > + + <!ATTLIST RmGLESPass + NAME CDATA #REQUIRED + API CDATA #REQUIRED + PASS_INDEX CDATA #REQUIRED + ENABLED ( TRUE | FALSE ) #REQUIRED + > + + <!ATTLIST RmShader + NAME CDATA #REQUIRED + API CDATA #REQUIRED + PIXEL_SHADER CDATA #REQUIRED + > + + <!ATTLIST RmHLSLShader + NAME CDATA #REQUIRED + API CDATA #REQUIRED + PIXEL_SHADER ( TRUE | FALSE ) #REQUIRED + TARGET CDATA #REQUIRED + ENTRY_POINT CDATA #REQUIRED + COMPILER_FLAGS CDATA #REQUIRED + > + + <!ATTLIST RmGLShader + NAME CDATA #REQUIRED + API CDATA #REQUIRED + PIXEL_SHADER ( TRUE | FALSE ) #REQUIRED + > + + <!ATTLIST RmGLESShader + NAME CDATA #REQUIRED + API CDATA #REQUIRED + PIXEL_SHADER ( TRUE | FALSE ) #REQUIRED + > + + <!ATTLIST RmShaderConstant + NAME CDATA #REQUIRED + API CDATA #REQUIRED + REGISTER CDATA #REQUIRED + > + + <!ATTLIST RmSampler + NAME CDATA #REQUIRED + API CDATA #REQUIRED + REGISTER CDATA #REQUIRED + > + + <!ATTLIST RmTextureObject + NAME CDATA #REQUIRED + API CDATA #REQUIRED + STATE_INDEX CDATA #REQUIRED + VERTEX_TEXTURE ( TRUE | FALSE ) #REQUIRED + > + + <!ATTLIST RmLightObject + NAME CDATA #REQUIRED + API CDATA #REQUIRED + INDEX CDATA #REQUIRED + > + + <!ATTLIST RmMaterialObject + NAME CDATA #REQUIRED + API CDATA #REQUIRED + INDEX CDATA #REQUIRED + > + + <!ATTLIST RmRenderStateBlock + NAME CDATA #REQUIRED + API CDATA #REQUIRED + > + + <!ATTLIST RmState + NAME CDATA #REQUIRED + API CDATA #REQUIRED + STATE CDATA #REQUIRED + VALUE CDATA #REQUIRED + USAGE CDATA #REQUIRED + > + + <!ATTLIST RmStreamMap + NAME CDATA #REQUIRED + API CDATA #REQUIRED + > + + <!ATTLIST RmStream + NAME CDATA #REQUIRED + API CDATA #REQUIRED + STRIDE CDATA #REQUIRED + > + + <!ATTLIST RmStreamChannel + NAME CDATA #REQUIRED + API CDATA #REQUIRED + DATA_SIZE CDATA #REQUIRED + DATA_TYPE CDATA #REQUIRED + REGISTER CDATA #REQUIRED + USAGE CDATA #REQUIRED + USAGE_INDEX CDATA #REQUIRED + ATTRIBUTE_NAME CDATA #REQUIRED + > + + <!ATTLIST RmModelData + NAME CDATA #REQUIRED + API CDATA #REQUIRED + FILE_NAME CDATA #REQUIRED + ORIENTATION CDATA #REQUIRED + > + + <!ATTLIST RmTextureReference + NAME CDATA #REQUIRED + API CDATA #REQUIRED + > + + <!ATTLIST RmLightReference + NAME CDATA #REQUIRED + API CDATA #REQUIRED + > + + <!ATTLIST RmMaterialReference + NAME CDATA #REQUIRED + API CDATA #REQUIRED + > + + <!ATTLIST RmModelReference + NAME CDATA #REQUIRED + API CDATA #REQUIRED + > + + <!ATTLIST RmStreamMapReference + NAME CDATA #REQUIRED + API CDATA #REQUIRED + > + + <!ATTLIST RmRenderableTexture + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + FILE_NAME CDATA #REQUIRED + ORIGIN CDATA #REQUIRED + WIDTH CDATA #REQUIRED + HEIGHT CDATA #REQUIRED + FORMAT CDATA #REQUIRED + USE_VIEWPORT_DIMENSIONS ( TRUE | FALSE ) #REQUIRED + GENERATE_MIPMAPS ( TRUE | FALSE ) #REQUIRED + WIDTH_RATIO CDATA #REQUIRED + HEIGHT_RATIO CDATA #REQUIRED + > + + <!ATTLIST RmRenderTarget + NAME CDATA #REQUIRED + API CDATA #REQUIRED + INDEX CDATA #REQUIRED + RENDER_TO_SCREEN ( TRUE | FALSE ) #REQUIRED + COLOR_CLEAR ( TRUE | FALSE ) #REQUIRED + DEPTH_CLEAR ( TRUE | FALSE ) #REQUIRED + CLEAR_COLOR_VALUE CDATA #REQUIRED + DEPTH_CLEAR_VALUE CDATA #REQUIRED + > + + <!ATTLIST RmBooleanVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + VALUE CDATA #REQUIRED + > + + <!ATTLIST RmFloatVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + VALUE CDATA #REQUIRED + MIN CDATA #REQUIRED + MAX CDATA #REQUIRED + CLAMP ( TRUE | FALSE ) #REQUIRED + > + + <!ATTLIST RmVectorVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + VALUE_0 CDATA #REQUIRED + VALUE_1 CDATA #REQUIRED + VALUE_2 CDATA #REQUIRED + VALUE_3 CDATA #REQUIRED + MIN CDATA #REQUIRED + MAX CDATA #REQUIRED + CLAMP ( TRUE | FALSE ) #REQUIRED + NORMALIZE ( TRUE | FALSE ) #REQUIRED + > + + <!ATTLIST RmMatrixVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + VALUE_0 CDATA #REQUIRED + VALUE_1 CDATA #REQUIRED + VALUE_2 CDATA #REQUIRED + VALUE_3 CDATA #REQUIRED + VALUE_4 CDATA #REQUIRED + VALUE_5 CDATA #REQUIRED + VALUE_6 CDATA #REQUIRED + VALUE_7 CDATA #REQUIRED + VALUE_8 CDATA #REQUIRED + VALUE_9 CDATA #REQUIRED + VALUE_10 CDATA #REQUIRED + VALUE_11 CDATA #REQUIRED + VALUE_12 CDATA #REQUIRED + VALUE_13 CDATA #REQUIRED + VALUE_14 CDATA #REQUIRED + VALUE_15 CDATA #REQUIRED + > + + <!ATTLIST RmDynamicVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + VARIABLE_TYPE ( FLOAT | INTEGER | BOOLEAN ) #REQUIRED + ROWS CDATA #REQUIRED + COLUMNS CDATA #REQUIRED + FIXED_SIZE ( TRUE | FALSE ) #REQUIRED + MIN CDATA #REQUIRED + MAX CDATA #REQUIRED + CLAMP ( TRUE | FALSE ) #REQUIRED + NORMALIZE ( TRUE | FALSE ) #REQUIRED + > + + <!ATTLIST RmDynamicVariableValue + ROW_INDEX CDATA #REQUIRED + COLUMN_INDEX CDATA #REQUIRED + VALUE CDATA #REQUIRED + > + + <!ATTLIST RmColorVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + VALUE_0 CDATA #REQUIRED + VALUE_1 CDATA #REQUIRED + VALUE_2 CDATA #REQUIRED + VALUE_3 CDATA #REQUIRED + > + + <!ATTLIST RmIntegerVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + VALUE CDATA #REQUIRED + MIN CDATA #REQUIRED + MAX CDATA #REQUIRED + CLAMP ( TRUE | FALSE ) #REQUIRED + > + + <!ATTLIST RmStringVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + > + + <!ATTLIST Rm2DTextureVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + FILE_NAME CDATA #REQUIRED + ORIGIN CDATA #REQUIRED + > + + <!ATTLIST RmCubemapVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + FILE_NAME CDATA #REQUIRED + ORIGIN CDATA #REQUIRED + > + + <!ATTLIST Rm3DTextureVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + FILE_NAME CDATA #REQUIRED + ORIGIN CDATA #REQUIRED + > + + <!ATTLIST RmLightVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + LIGHT_ENABLED ( TRUE | FALSE ) #REQUIRED + LIGHT_TYPE ( POSITIONAL | DIRECTIONAL | SPOTLIGHT ) #REQUIRED + AMBIENT_0 CDATA #REQUIRED + AMBIENT_1 CDATA #REQUIRED + AMBIENT_2 CDATA #REQUIRED + AMBIENT_3 CDATA #REQUIRED + DIFFUSE_0 CDATA #REQUIRED + DIFFUSE_1 CDATA #REQUIRED + DIFFUSE_2 CDATA #REQUIRED + DIFFUSE_3 CDATA #REQUIRED + SPECULAR_0 CDATA #REQUIRED + SPECULAR_1 CDATA #REQUIRED + SPECULAR_2 CDATA #REQUIRED + SPECULAR_3 CDATA #REQUIRED + POSITION_0 CDATA #REQUIRED + POSITION_1 CDATA #REQUIRED + POSITION_2 CDATA #REQUIRED + DIRECTION_0 CDATA #REQUIRED + DIRECTION_1 CDATA #REQUIRED + DIRECTION_2 CDATA #REQUIRED + ATTENUATION_0 CDATA #REQUIRED + ATTENUATION_1 CDATA #REQUIRED + ATTENUATION_2 CDATA #REQUIRED + SPOTLIGHT_THETA CDATA #REQUIRED + SPOTLIGHT_PHI CDATA #REQUIRED + RANGE CDATA #REQUIRED + FALLOFF CDATA #REQUIRED + > + + <!ATTLIST RmMaterialVariable + NAME CDATA #REQUIRED + API CDATA #REQUIRED + ARTIST_EDITABLE ( TRUE | FALSE ) #REQUIRED + VARIABLE_SEMANTIC CDATA #REQUIRED + AMBIENT_0 CDATA #REQUIRED + AMBIENT_1 CDATA #REQUIRED + AMBIENT_2 CDATA #REQUIRED + AMBIENT_3 CDATA #REQUIRED + DIFFUSE_0 CDATA #REQUIRED + DIFFUSE_1 CDATA #REQUIRED + DIFFUSE_2 CDATA #REQUIRED + DIFFUSE_3 CDATA #REQUIRED + SPECULAR_0 CDATA #REQUIRED + SPECULAR_1 CDATA #REQUIRED + SPECULAR_2 CDATA #REQUIRED + SPECULAR_3 CDATA #REQUIRED + EMISSIVE_0 CDATA #REQUIRED + EMISSIVE_1 CDATA #REQUIRED + EMISSIVE_2 CDATA #REQUIRED + EMISSIVE_3 CDATA #REQUIRED + SPECULAR_POWER CDATA #REQUIRED + > + + <!ATTLIST RmRegistryBranch + NAME CDATA #REQUIRED + API CDATA #REQUIRED + XML_VERSION CDATA #REQUIRED + > + + <!ATTLIST RmPlugInData + NAME CDATA #REQUIRED + API CDATA #REQUIRED + PLUGIN_GUID CDATA #REQUIRED + > + + <!ATTLIST RmClipboardNode + NAME CDATA #REQUIRED + API CDATA #REQUIRED + XML_VERSION CDATA #REQUIRED + > + + <!ATTLIST RmCamera + NAME CDATA #REQUIRED + API CDATA #REQUIRED + CAMERA_POSITION_X CDATA #REQUIRED + CAMERA_POSITION_Y CDATA #REQUIRED + CAMERA_POSITION_Z CDATA #REQUIRED + LOOK_AT_VECTOR_X CDATA #REQUIRED + LOOK_AT_VECTOR_Y CDATA #REQUIRED + LOOK_AT_VECTOR_Z CDATA #REQUIRED + UP_VECTOR_X CDATA #REQUIRED + UP_VECTOR_Y CDATA #REQUIRED + UP_VECTOR_Z CDATA #REQUIRED + FOV CDATA #REQUIRED + NEAR_CLIP_PLANE CDATA #REQUIRED + FAR_CLIP_PLANE CDATA #REQUIRED + > + + <!ATTLIST RmCameraReference + NAME CDATA #REQUIRED + API CDATA #REQUIRED + USE_ACTIVE_CAMERA ( TRUE | FALSE ) #REQUIRED + > + + <!ATTLIST RmShaderCode + TYPE ( TEXT ) #REQUIRED + > + + <!ATTLIST RmTextDataBlock + TYPE ( TEXT ) #REQUIRED + > + +]> +<RENDER_MONKEY> + <RmEffectWorkspace NAME="Effect Workspace" API="" ACTIVE_EFFECT="Effect Workspace.Textured Bump" VALIDATION_STRING="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="RM_REGISTRY" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="RM_LOCAL" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="RM_PLUGIN" API="" XML_VERSION="RenderMonkey 1.71"><RmTextDataBlock TYPE="TEXT"><![CDATA[ +<DockingPaneLayouts><Application_Layout><Pane-1><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Artist Editor</Title><ID>1001</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>8</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>8</LastHolder></Pane-1><Pane-2><Type>2</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><Horiz>1</Horiz><Pane-1>3</Pane-1><Panes>1</Panes></Pane-2><Pane-3><Type>2</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><Horiz>0</Horiz><Pane-1>4</Pane-1><Pane-2>9</Pane-2><Panes>2</Panes></Pane-3><Pane-4><Type>2</Type><DockingCX>0</DockingCX><DockingCY>791</DockingCY><Horiz>1</Horiz><Pane-1>5</Pane-1><Pane-2>7</Pane-2><Pane-3>8</Pane-3><Panes>3</Panes></Pane-4><Pane-5><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>6</Selected><Panes>1</Panes><Pane-1>6</Pane-1></Pane-5><Pane-6><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Workspace</Title><ID>1000</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>5</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>5</LastHolder></Pane-6><Pane-7><Type>4</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY></Pane-7><Pane-8><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-8><Pane-9><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>10</Selected><Panes>1</Panes><Pane-1>10</Pane-1></Pane-9><Pane-10><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Output</Title><ID>1002</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>9</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>9</LastHolder></Pane-10><Summary><TopContainer>2</TopContainer><Client>7</Client><Panes>10</Panes></Summary></Application_Layout></DockingPaneLayouts> +]]></RmTextDataBlock> + <RmRegistryBranch NAME="RmPreviewGLWindow" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="EffectPlacementRepository" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="Effect Workspace.Textured Bump" API="" XML_VERSION="RenderMonkey 1.71"> + <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="0" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="0" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="349" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="350" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="ShowStatus" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Visible" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="0" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Minimized X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="-1" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Minimized Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="-1" MIN="-10" MAX="10" CLAMP="FALSE"/> + </RmRegistryBranch> + </RmRegistryBranch> + </RmRegistryBranch> + <RmRegistryBranch NAME="RmStreamEditor" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="Effect Workspace.Textured Bump.Stream Mapping" API="" XML_VERSION="RenderMonkey 1.71"> + <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="663" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="400" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="851" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="310" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="ShowStatus" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Visible" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="0" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Minimized X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="-1" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Minimized Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="-1" MIN="-10" MAX="10" CLAMP="FALSE"/> + </RmRegistryBranch> + </RmRegistryBranch> + <RmRegistryBranch NAME="RmPreviewDx9Window" API="" XML_VERSION="RenderMonkey 1.71"/> + <RmRegistryBranch NAME="RmPreviewGLESWindow" API="" XML_VERSION="RenderMonkey 1.71"/> + <RmRegistryBranch NAME="RmPreviewGLPreview" API="" XML_VERSION="RenderMonkey 1.71"/> + <RmRegistryBranch NAME="RmLightEditor" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/> + </RmRegistryBranch> + <RmRegistryBranch NAME="NoteEditor" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/> + </RmRegistryBranch> + <RmRegistryBranch NAME="RmRenderableTextureEditor" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/> + </RmRegistryBranch> + <RmRegistryBranch NAME="RmRenderTargetEditor" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/> + </RmRegistryBranch> + <RmRegistryBranch NAME="RmShaderEditor" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="Effect Workspace.Textured Bump" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="Disassembly" API="" XML_VERSION="RenderMonkey 1.71"/> + <RmStringVariable NAME="Editing Shader" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC=""><RmTextDataBlock TYPE="TEXT"><![CDATA[ +Fragment Program]]></RmTextDataBlock></RmStringVariable> + <RmStringVariable NAME="Editing Pass" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC=""><RmTextDataBlock TYPE="TEXT"><![CDATA[ +Pass 0]]></RmTextDataBlock></RmStringVariable> + <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="32" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1014" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="650" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="ShowStatus" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Visible" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Minimized X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="-1" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="Minimized Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="-1" MIN="-10" MAX="10" CLAMP="FALSE"/> + <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="43" MIN="-10" MAX="10" CLAMP="FALSE"/> + </RmRegistryBranch> + </RmRegistryBranch> + <RmRegistryBranch NAME="RmRenderStateBlockEditor" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/> + </RmRegistryBranch> + <RmRegistryBranch NAME="RmTextureObjectEditor" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/> + </RmRegistryBranch> + <RmRegistryBranch NAME="RmTextureGenerator" API="" XML_VERSION="RenderMonkey 1.71"> + <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/> + </RmRegistryBranch> + </RmRegistryBranch> + <RmRegistryBranch NAME="WORKSPACE" API="" XML_VERSION="RenderMonkey 1.71"> + <RmStringVariable NAME="LAST_SAVE" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC=""><RmTextDataBlock TYPE="TEXT"><![CDATA[ +21/12/2007 14:16:11]]></RmTextDataBlock></RmStringVariable> + <RmStringVariable NAME="VERSION" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC=""><RmTextDataBlock TYPE="TEXT"><![CDATA[ +RenderMonkey Version 1.80 (build 125)]]></RmTextDataBlock></RmStringVariable> + <RmStringVariable NAME="XML_VERSION" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC=""><RmTextDataBlock TYPE="TEXT"><![CDATA[ +RenderMonkey 1.71]]></RmTextDataBlock></RmStringVariable> + <RmStringVariable NAME="BASE_WORKSPACE_PATH" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC=""><RmTextDataBlock TYPE="TEXT"><![CDATA[ +D:\download\]]></RmTextDataBlock></RmStringVariable> + </RmRegistryBranch> + </RmRegistryBranch> + </RmRegistryBranch> + <RmOpenGLESEffect NAME="Textured Bump" API="OpenGL ES" ACTIVE_CAMERA=""> + <RmFloatVariable NAME="u_specularPower" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE="25.000000" MIN="1.000000" MAX="100.000000" CLAMP="TRUE"/> + <RmDynamicVariable NAME="u_lightPosition" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VARIABLE_TYPE="FLOAT" ROWS="3" COLUMNS="1" FIXED_SIZE="TRUE" MIN="-100.000000" MAX="100.000000" CLAMP="TRUE" NORMALIZE="FALSE"> + <RmDynamicVariableValueContainer> + <RmDynamicVariableValue ROW_INDEX="0" COLUMN_INDEX="0" VALUE="-100.000000"/> + <RmDynamicVariableValue ROW_INDEX="1" COLUMN_INDEX="0" VALUE="100.000000"/> + <RmDynamicVariableValue ROW_INDEX="2" COLUMN_INDEX="0" VALUE="100.000000"/> + </RmDynamicVariableValueContainer> + </RmDynamicVariable> + <RmDynamicVariable NAME="u_eyePosition" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VARIABLE_TYPE="FLOAT" ROWS="3" COLUMNS="1" FIXED_SIZE="TRUE" MIN="-100.000000" MAX="100.000000" CLAMP="TRUE" NORMALIZE="FALSE"> + <RmDynamicVariableValueContainer> + <RmDynamicVariableValue ROW_INDEX="0" COLUMN_INDEX="0" VALUE="0.000000"/> + <RmDynamicVariableValue ROW_INDEX="1" COLUMN_INDEX="0" VALUE="0.000000"/> + <RmDynamicVariableValue ROW_INDEX="2" COLUMN_INDEX="0" VALUE="100.000000"/> + </RmDynamicVariableValueContainer> + </RmDynamicVariable> + <RmMatrixVariable NAME="u_matViewProjection" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewProjection" VALUE_0="1.248492" VALUE_1="-0.144174" VALUE_2="1.796089" VALUE_3="-0.000000" VALUE_4="-0.822713" VALUE_5="2.144300" VALUE_6="0.744007" VALUE_7="-0.000062" VALUE_8="0.748748" VALUE_9="0.455184" VALUE_10="-0.483929" VALUE_11="199.199112" VALUE_12="0.747999" VALUE_13="0.454729" VALUE_14="-0.483445" VALUE_15="199.999908"/> + <RmMatrixVariable NAME="u_matViewInverse" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewInverse" VALUE_0="0.569533" VALUE_1="-0.340779" VALUE_2="-0.747999" VALUE_3="-149.599716" VALUE_4="-0.065769" VALUE_5="0.888198" VALUE_6="-0.454729" VALUE_7="-90.945732" VALUE_8="0.819333" VALUE_9="0.308178" VALUE_10="0.483445" VALUE_11="96.689011" VALUE_12="-0.000000" VALUE_13="-0.000000" VALUE_14="0.000000" VALUE_15="1.000000"/> + <RmColorVariable NAME="u_ambient" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE_0="0.368627" VALUE_1="0.368421" VALUE_2="0.368421" VALUE_3="1.000000"/> + <RmColorVariable NAME="u_diffuse" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE_0="0.886275" VALUE_1="0.885003" VALUE_2="0.885003" VALUE_3="1.000000"/> + <RmColorVariable NAME="u_specular" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE_0="0.490196" VALUE_1="0.488722" VALUE_2="0.488722" VALUE_3="1.000000"/> + <Rm2DTextureVariable NAME="bump" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" FILE_NAME="FieldstoneBumpDOT3.tga" ORIGIN="0"/> + <Rm2DTextureVariable NAME="base" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" FILE_NAME="Fieldstone.tga" ORIGIN="0"/> + <RmStreamMap NAME="Stream Mapping" API=""> + <RmStream NAME="Stream" API="" STRIDE="56"> + <RmStreamChannel NAME="Position_0" API="" DATA_SIZE="12" DATA_TYPE="2" REGISTER="0" USAGE="0" USAGE_INDEX="0" ATTRIBUTE_NAME="a_vertex"/> + <RmStreamChannel NAME="TexCoord_0" API="" DATA_SIZE="8" DATA_TYPE="1" REGISTER="0" USAGE="5" USAGE_INDEX="0" ATTRIBUTE_NAME="a_texcoord0"/> + <RmStreamChannel NAME="Normal_0" API="" DATA_SIZE="12" DATA_TYPE="2" REGISTER="0" USAGE="3" USAGE_INDEX="0" ATTRIBUTE_NAME="a_normal"/> + <RmStreamChannel NAME="Binormal_0" API="" DATA_SIZE="12" DATA_TYPE="2" REGISTER="0" USAGE="7" USAGE_INDEX="0" ATTRIBUTE_NAME="a_binormal"/> + <RmStreamChannel NAME="Tangent_0" API="" DATA_SIZE="12" DATA_TYPE="2" REGISTER="0" USAGE="6" USAGE_INDEX="0" ATTRIBUTE_NAME="a_tangent"/> + </RmStream> + </RmStreamMap> + <RmModelData NAME="Model" API="" FILE_NAME=".\Torus.3ds" ORIENTATION="0"/> + <RmGLESPass NAME="Pass 0" API="OpenGL ES" PASS_INDEX="0" ENABLED="TRUE"> + <RmModelReference NAME="Model" API=""/> + <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[ +uniform mat4 u_matViewInverse; +uniform mat4 u_matViewProjection; +uniform vec3 u_lightPosition; +uniform vec3 u_eyePosition; + +varying vec2 v_texcoord; +varying vec3 v_viewDirection; +varying vec3 v_lightDirection; + +attribute vec4 a_vertex; +attribute vec2 a_texcoord0; +attribute vec3 a_normal; +attribute vec3 a_binormal; +attribute vec3 a_tangent; + +void main( void ) +{ + // Transform eye vector into world space + vec3 eyePositionWorld = (u_matViewInverse * vec4(u_eyePosition, 1.0)).xyz; + + // Compute world-space direction vector + vec3 viewDirectionWorld = eyePositionWorld - a_vertex.xyz; + + // Transform light position into world space + vec3 lightPositionWorld = (u_matViewInverse * vec4(u_lightPosition, 1.0)).xyz; + + // Compute world-space light dirction vector + vec3 lightDirectionWorld = lightPositionWorld - a_vertex.xyz; + + // Create the tangent matrix + mat3 tangentMat = mat3( a_tangent, + a_binormal, + a_normal ); + + // Transform the view and light vectors into tangent space + v_viewDirection = viewDirectionWorld * tangentMat; + v_lightDirection = lightDirectionWorld * tangentMat; + + // Transform output position + gl_Position = u_matViewProjection * a_vertex; + + // Pass through texture coordinate + v_texcoord = a_texcoord0.xy; + +}]]></RmShaderCode></RmGLESShader> + <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[ +precision mediump float; + +uniform vec4 u_ambient; +uniform vec4 u_specular; +uniform vec4 u_diffuse; +uniform float u_specularPower; + +uniform sampler2D s_baseMap; +uniform sampler2D s_bumpMap; + +varying vec2 v_texcoord; +varying vec3 v_viewDirection; +varying vec3 v_lightDirection; + +void main( void ) +{ + // Fetch basemap color + vec4 baseColor = texture2D( s_baseMap, v_texcoord ); + + // Fetch the tangent space normal from normal map + vec3 normal = texture2D( s_bumpMap, v_texcoord ).xyz; + + // Scale and bias from [0, 1] to [-1, 1] and normalize + normal = normalize( normal * 2.0 - 1.0 ); + + // Normalize the light direction and view direction + vec3 lightDirection = normalize( v_lightDirection ); + vec3 viewDirection = normalize( v_viewDirection ); + + // Compute N.L + float nDotL = dot( normal, lightDirection ); + + // Compute reflection vector + vec3 reflection = ( 2.0 * normal * nDotL ) - lightDirection; + + // Compute R.V + float rDotV = max( 0.0, dot( reflection, viewDirection ) ); + + // Compute Ambient term + vec4 ambient = u_ambient * baseColor; + + // Compute Diffuse term + vec4 diffuse = u_diffuse * nDotL * baseColor; + + // Compute Specular term + vec4 specular = u_specular * pow( rDotV, u_specularPower ); + + // Output final color + gl_FragColor = ambient + diffuse + specular; +}]]></RmShaderCode></RmGLESShader> + <RmStreamMapReference NAME="Stream Mapping" API=""/> + <RmTextureObject NAME="s_baseMap" API="OpenGL ES" STATE_INDEX="0" VERTEX_TEXTURE="FALSE"> + <RmTextureReference NAME="base" API=""/> + <RmState NAME="GL_TextureMinify" API="OpenGL ES" STATE="4" VALUE="6" USAGE="SAMPLER_STATE"/> + <RmState NAME="GL_TextureMagnify" API="OpenGL ES" STATE="5" VALUE="1" USAGE="SAMPLER_STATE"/> + </RmTextureObject> + <RmTextureObject NAME="s_bumpMap" API="OpenGL ES" STATE_INDEX="1" VERTEX_TEXTURE="FALSE"> + <RmTextureReference NAME="bump" API=""/> + <RmState NAME="GL_TextureMinify" API="OpenGL ES" STATE="4" VALUE="6" USAGE="SAMPLER_STATE"/> + <RmState NAME="GL_TextureMagnify" API="OpenGL ES" STATE="5" VALUE="1" USAGE="SAMPLER_STATE"/> + </RmTextureObject> + <RmSampler NAME="s_baseMap" API="" REGISTER="-1"/> + <RmSampler NAME="s_bumpMap" API="" REGISTER="-1"/> + <RmShaderConstant NAME="u_eyePosition" API="" REGISTER="-1"/> + <RmShaderConstant NAME="u_lightPosition" API="" REGISTER="-1"/> + <RmShaderConstant NAME="u_matViewInverse" API="" REGISTER="-1"/> + <RmShaderConstant NAME="u_matViewProjection" API="" REGISTER="-1"/> + <RmShaderConstant NAME="u_specular" API="" REGISTER="-1"/> + <RmShaderConstant NAME="u_specularPower" API="" REGISTER="-1"/> + <RmShaderConstant NAME="u_ambient" API="" REGISTER="-1"/> + <RmShaderConstant NAME="u_diffuse" API="" REGISTER="-1"/> + </RmGLESPass> + </RmOpenGLESEffect> + </RmEffectWorkspace> +</RENDER_MONKEY> |