summaryrefslogtreecommitdiffstats
path: root/third_party/gles2_book/Chapter_13
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/gles2_book/Chapter_13')
-rw-r--r--third_party/gles2_book/Chapter_13/EnvironmentMapping/EnvironmentMapping.rfx1204
-rw-r--r--third_party/gles2_book/Chapter_13/EnvironmentMapping/Fieldstone.tgabin0 -> 786476 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/EnvironmentMapping/FieldstoneBumpDOT3.tgabin0 -> 786450 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/EnvironmentMapping/Snow.ddsbin0 -> 2097440 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/EnvironmentMapping/Sphere.3dsbin0 -> 23649 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/EnvironmentMapping/Teapot.3dsbin0 -> 1004218 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/Noise3D/Noise3D.rfx1171
-rw-r--r--third_party/gles2_book/Chapter_13/Noise3D/NoiseVolume.ddsbin0 -> 2097280 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/Noise3D/SkyDome.3dsbin0 -> 83982 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/Noise3D/Terrain.3dsbin0 -> 1477635 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/Noise3D/Terrain.tgabin0 -> 786971 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/Noise3D/generatenoise.c147
-rw-r--r--third_party/gles2_book/Chapter_13/ParticleSystem/ParticleSystem.c294
-rw-r--r--third_party/gles2_book/Chapter_13/ParticleSystem/smoke.tgabin0 -> 49170 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/PerFragmentLighting/Fieldstone.tgabin0 -> 786476 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/PerFragmentLighting/FieldstoneBumpDOT3.tgabin0 -> 786450 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/PerFragmentLighting/PerFragmentLighting.rfx1137
-rw-r--r--third_party/gles2_book/Chapter_13/PerFragmentLighting/Torus.3dsbin0 -> 77621 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/PostProcess/Car.3dsbin0 -> 71400 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/PostProcess/Cube.x215
-rw-r--r--third_party/gles2_book/Chapter_13/PostProcess/Fieldstone.tgabin0 -> 786476 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/PostProcess/PostProcess.rfx1395
-rw-r--r--third_party/gles2_book/Chapter_13/PostProcess/ScreenAlignedQuad.3dsbin0 -> 1504 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/ProceduralTextures/Checker.rfx1081
-rw-r--r--third_party/gles2_book/Chapter_13/ProceduralTextures/CheckerAA.rfx1109
-rw-r--r--third_party/gles2_book/Chapter_13/ProceduralTextures/ProceduralTextures.rfx1109
-rw-r--r--third_party/gles2_book/Chapter_13/ProceduralTextures/ScreenAlignedQuad.3dsbin0 -> 1504 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/ProceduralTextures/checker.fs21
-rw-r--r--third_party/gles2_book/Chapter_13/ProceduralTextures/checker.tiffbin0 -> 311274 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/ProceduralTextures/checker.vs14
-rw-r--r--third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Corona.tgabin0 -> 786971 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/ProjectiveSpotlight/ProjectiveSpotlight.rfx1133
-rw-r--r--third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Terrain.3dsbin0 -> 1477635 bytes
-rw-r--r--third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Terrain.tgabin0 -> 786971 bytes
34 files changed, 10030 insertions, 0 deletions
diff --git a/third_party/gles2_book/Chapter_13/EnvironmentMapping/EnvironmentMapping.rfx b/third_party/gles2_book/Chapter_13/EnvironmentMapping/EnvironmentMapping.rfx
new file mode 100644
index 0000000..8c32adb
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/EnvironmentMapping/EnvironmentMapping.rfx
@@ -0,0 +1,1204 @@
+<?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.Environment Mapping" 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>641</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.Environment Mapping" 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="6" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="433" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="400" 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"/>
+ </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 NAME="Effect Workspace.Environment Mapping.Stream Mapping" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="258" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="128" 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.Environment Mapping" 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[
+Teapot]]></RmTextDataBlock></RmStringVariable>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="-1" 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="3" 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="491" 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 NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Environment Mapping" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="54" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="70" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1283" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="434" 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="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[
+27/12/2007 11:33:28]]></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:\svn\redbook\Code\Chapter_12\EnvironmentMapping\]]></RmTextDataBlock></RmStringVariable>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmOpenGLESEffect NAME="Environment Mapping" API="OpenGL ES" ACTIVE_CAMERA="Camera">
+ <RmCamera NAME="Camera" API="" CAMERA_POSITION_X="-13.744995" CAMERA_POSITION_Y="23.367828" CAMERA_POSITION_Z="-220.341003" LOOK_AT_VECTOR_X="4.617599" LOOK_AT_VECTOR_Y="-4.282429" LOOK_AT_VECTOR_Z="0.204170" UP_VECTOR_X="-0.257297" UP_VECTOR_Y="0.955950" UP_VECTOR_Z="0.141275" FOV="45.000000" NEAR_CLIP_PLANE="70.930000" FAR_CLIP_PLANE="1883.088135"/>
+ <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.965568" VALUE_1="-0.543160" VALUE_2="0.095556" VALUE_3="6.730651" VALUE_4="-0.621170" VALUE_5="2.307867" VALUE_6="0.341067" VALUE_7="12.683241" VALUE_8="0.085555" VALUE_9="-0.128829" VALUE_10="1.027569" VALUE_11="156.895691" VALUE_12="0.082333" VALUE_13="-0.123976" VALUE_14="0.988864" VALUE_15="221.915924"/>
+ <RmMatrixVariable NAME="u_matViewInverse" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewInverse" VALUE_0="-0.962819" VALUE_1="-0.257297" VALUE_2="-0.082333" VALUE_3="-13.744995" VALUE_4="-0.266063" VALUE_5="0.955950" VALUE_6="0.123978" VALUE_7="23.367828" VALUE_8="0.046807" VALUE_9="0.141272" VALUE_10="-0.988863" VALUE_11="-220.341003" VALUE_12="0.000000" VALUE_13="0.000000" VALUE_14="0.000000" VALUE_15="1.000000"/>
+ <RmFloatVariable NAME="u_specularPower" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE="25.000000" MIN="1.000000" MAX="100.000000" CLAMP="TRUE"/>
+ <RmVectorVariable NAME="u_viewPosition" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewPosition" VALUE_0="-13.744995" VALUE_1="23.367828" VALUE_2="-220.341003" VALUE_3="1.000000" MIN="-10.000000" MAX="10.000000" CLAMP="FALSE" NORMALIZE="FALSE"/>
+ <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>
+ <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="base" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" FILE_NAME="Fieldstone.tga" ORIGIN="0"/>
+ <Rm2DTextureVariable NAME="bump" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" FILE_NAME="FieldstoneBumpDOT3.tga" ORIGIN="0"/>
+ <RmCubemapVariable NAME="cubemap" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" FILE_NAME="Snow.dds" 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="SkyDome" API="" FILE_NAME=".\Sphere.3ds" ORIENTATION="0"/>
+ <RmModelData NAME="Teapot" API="" FILE_NAME=".\Teapot.3ds" ORIENTATION="0"/>
+ <RmGLESPass NAME="Skybox" API="OpenGL ES" PASS_INDEX="0" ENABLED="TRUE">
+ <RmCameraReference NAME="Camera" API="" USE_ACTIVE_CAMERA="FALSE"/>
+ <RmModelReference NAME="SkyDome" API=""/>
+ <RmRenderStateBlock NAME="Render State" API="OpenGL ES">
+ <RmState NAME="GL_CullMode" API="OpenGL ES" STATE="8" VALUE="1" USAGE="RENDER_STATE"/>
+ <RmState NAME="GL_WriteMaskDepth" API="OpenGL ES" STATE="54" VALUE="0" USAGE="RENDER_STATE"/>
+ </RmRenderStateBlock>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+precision mediump float;
+
+uniform samplerCube s_cubeMap;
+
+varying vec3 v_texcoord;
+
+
+void main(void)
+{
+ gl_FragColor = textureCube( s_cubeMap, v_texcoord );
+}]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+uniform vec4 u_viewPosition;
+uniform mat4 u_matViewProjection;
+attribute vec4 a_vertex;
+varying vec3 v_texcoord;
+void main(void)
+{
+ vec3 position = a_vertex.xyz;
+
+ position += u_viewPosition.xyz;
+
+ gl_Position = u_matViewProjection * vec4( position, 1.0 );
+
+ v_texcoord = a_vertex.xyz;
+}]]></RmShaderCode></RmGLESShader>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmTextureObject NAME="s_cubeMap" API="OpenGL ES" STATE_INDEX="0" VERTEX_TEXTURE="FALSE">
+ <RmTextureReference NAME="cubemap" API=""/>
+ </RmTextureObject>
+ <RmSampler NAME="s_cubeMap" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_viewPosition" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_matViewProjection" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ <RmGLESPass NAME="Teapot" API="OpenGL ES" PASS_INDEX="1" ENABLED="TRUE">
+ <RmCameraReference NAME="Camera" API="" USE_ACTIVE_CAMERA="FALSE"/>
+ <RmModelReference NAME="Teapot" API=""/>
+ <RmRenderStateBlock NAME="Render State" API="OpenGL ES">
+ <RmState NAME="GL_CullMode" API="OpenGL ES" STATE="8" VALUE="3" USAGE="RENDER_STATE"/>
+ <RmState NAME="GL_WriteMaskDepth" API="OpenGL ES" STATE="54" VALUE="1" USAGE="RENDER_STATE"/>
+ </RmRenderStateBlock>
+ <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_lightDirection;
+varying vec3 v_normal;
+varying vec3 v_binormal;
+varying vec3 v_tangent;
+
+attribute vec4 a_vertex;
+attribute vec2 a_texcoord0;
+attribute vec3 a_normal;
+attribute vec3 a_binormal;
+attribute vec3 a_tangent;
+
+void main( void )
+{
+ // 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;
+
+ // Pass the world-space light vector to the fragment shader
+ v_lightDirection = lightDirectionWorld;
+
+ // Transform output position
+ gl_Position = u_matViewProjection * a_vertex;
+
+ // Pass through other attributes
+ v_texcoord = a_texcoord0.xy;
+ v_normal = a_normal;
+ v_binormal = a_binormal;
+ v_tangent = a_tangent;
+
+}]]></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;
+uniform samplerCube s_envMap;
+
+
+varying vec2 v_texcoord;
+varying vec3 v_lightDirection;
+varying vec3 v_normal;
+varying vec3 v_binormal;
+varying vec3 v_tangent;
+
+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]
+ normal = normal * 2.0 - 1.0;
+
+ // Construct a matrix to transform from tangent to world space
+ mat3 tangentToWorldMat = mat3( v_tangent,
+ v_binormal,
+ v_normal );
+
+ // Transform normal to world space and normalize
+ normal = normalize( tangentToWorldMat * normal );
+
+ // Normalize the light direction
+ vec3 lightDirection = normalize( v_lightDirection );
+
+ // Compute N.L
+ float nDotL = dot( normal, lightDirection );
+
+ // Compute reflection vector
+ vec3 reflection = ( 2.0 * normal * nDotL ) - lightDirection;
+
+ // Use the reflection vector to fetch from the environment map
+ vec4 envColor = textureCube( s_envMap, reflection );
+
+ // Output final color
+ gl_FragColor = 0.25 * baseColor + envColor;
+}]]></RmShaderCode></RmGLESShader>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmTextureObject NAME="s_envMap" API="OpenGL ES" STATE_INDEX="2" VERTEX_TEXTURE="FALSE">
+ <RmTextureReference NAME="cubemap" API=""/>
+ </RmTextureObject>
+ <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"/>
+ <RmSampler NAME="s_envMap" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_lightPosition" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_matViewInverse" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_matViewProjection" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ </RmOpenGLESEffect>
+ </RmEffectWorkspace>
+</RENDER_MONKEY>
diff --git a/third_party/gles2_book/Chapter_13/EnvironmentMapping/Fieldstone.tga b/third_party/gles2_book/Chapter_13/EnvironmentMapping/Fieldstone.tga
new file mode 100644
index 0000000..8acafae
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/EnvironmentMapping/Fieldstone.tga
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/EnvironmentMapping/FieldstoneBumpDOT3.tga b/third_party/gles2_book/Chapter_13/EnvironmentMapping/FieldstoneBumpDOT3.tga
new file mode 100644
index 0000000..6290f52
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/EnvironmentMapping/FieldstoneBumpDOT3.tga
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/EnvironmentMapping/Snow.dds b/third_party/gles2_book/Chapter_13/EnvironmentMapping/Snow.dds
new file mode 100644
index 0000000..62799c2
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/EnvironmentMapping/Snow.dds
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/EnvironmentMapping/Sphere.3ds b/third_party/gles2_book/Chapter_13/EnvironmentMapping/Sphere.3ds
new file mode 100644
index 0000000..108b93d
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/EnvironmentMapping/Sphere.3ds
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/EnvironmentMapping/Teapot.3ds b/third_party/gles2_book/Chapter_13/EnvironmentMapping/Teapot.3ds
new file mode 100644
index 0000000..78be5fb
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/EnvironmentMapping/Teapot.3ds
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/Noise3D/Noise3D.rfx b/third_party/gles2_book/Chapter_13/Noise3D/Noise3D.rfx
new file mode 100644
index 0000000..b6663d1
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/Noise3D/Noise3D.rfx
@@ -0,0 +1,1171 @@
+<?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" 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>12</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>12</LastHolder></Pane-1><Pane-2><Type>0</Type><DockingCX>254</DockingCX><DockingCY>374</DockingCY><Title>u_fogColor</Title><ID>1100</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>6</DockingHolder><FloatingHolder>17</FloatingHolder><LastHolder>17</LastHolder></Pane-2><Pane-3><Type>2</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><Horiz>1</Horiz><Pane-1>4</Pane-1><Pane-2>5</Pane-2><Pane-3>6</Pane-3><Pane-4>7</Pane-4><Panes>4</Panes></Pane-3><Pane-4><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-4><Pane-5><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-5><Pane-6><Type>1</Type><DockingCX>254</DockingCX><DockingCY>374</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-6><Pane-7><Type>2</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><Horiz>0</Horiz><Pane-1>8</Pane-1><Pane-2>13</Pane-2><Panes>2</Panes></Pane-7><Pane-8><Type>2</Type><DockingCX>0</DockingCX><DockingCY>641</DockingCY><Horiz>1</Horiz><Pane-1>9</Pane-1><Pane-2>11</Pane-2><Pane-3>12</Pane-3><Panes>3</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>Workspace</Title><ID>1000</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>9</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>9</LastHolder></Pane-10><Pane-11><Type>4</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY></Pane-11><Pane-12><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-12><Pane-13><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>14</Selected><Panes>1</Panes><Pane-1>14</Pane-1></Pane-13><Pane-14><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Output</Title><ID>1002</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>13</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>13</LastHolder></Pane-14><Pane-15><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>16</TopContaner><WindowRectTopPos>32</WindowRectTopPos><WindowRectBottomPos>406</WindowRectBottomPos><WindowRectLeftPos>0</WindowRectLeftPos><WindowRectRightPos>254</WindowRectRightPos></Pane-15><Pane-16><Type>2</Type><DockingCX>254</DockingCX><DockingCY>374</DockingCY><Horiz>1</Horiz><Pane-1>17</Pane-1><Panes>1</Panes></Pane-16><Pane-17><Type>1</Type><DockingCX>254</DockingCX><DockingCY>374</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-17><Pane-18><Type>0</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Title>u_fogMaxDist</Title><ID>1101</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>5</DockingHolder><FloatingHolder>21</FloatingHolder><LastHolder>21</LastHolder></Pane-18><Pane-19><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>20</TopContaner><WindowRectTopPos>32</WindowRectTopPos><WindowRectBottomPos>160</WindowRectBottomPos><WindowRectLeftPos>0</WindowRectLeftPos><WindowRectRightPos>566</WindowRectRightPos></Pane-19><Pane-20><Type>2</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Horiz>1</Horiz><Pane-1>21</Pane-1><Panes>1</Panes></Pane-20><Pane-21><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-21><Pane-22><Type>0</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Title>u_fogMinDist</Title><ID>1102</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>4</DockingHolder><FloatingHolder>25</FloatingHolder><LastHolder>25</LastHolder></Pane-22><Pane-23><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>24</TopContaner><WindowRectTopPos>32</WindowRectTopPos><WindowRectBottomPos>160</WindowRectBottomPos><WindowRectLeftPos>0</WindowRectLeftPos><WindowRectRightPos>566</WindowRectRightPos></Pane-23><Pane-24><Type>2</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Horiz>1</Horiz><Pane-1>25</Pane-1><Panes>1</Panes></Pane-24><Pane-25><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-25><Summary><TopContainer>3</TopContainer><Client>11</Client><Panes>25</Panes></Summary></Application_Layout></DockingPaneLayouts>
+]]></RmTextDataBlock>
+ <RmRegistryBranch NAME="RmColorEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Textured.u_fogColor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1100" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmBooleanVariable NAME="FloatingPoint" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="FALSE"/>
+ <RmIntegerVariable NAME="ColorType" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmBooleanVariable NAME="LargeSize" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="TRUE"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmScalarEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Textured.u_fogMaxDist" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1101" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="Effect Workspace.Textured.u_fogMinDist" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1102" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmRenderStateBlockEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Textured" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="340" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="143" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1283" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="434" 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="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmPreviewDx9Window" API="" XML_VERSION="RenderMonkey 1.71"/>
+ <RmRegistryBranch NAME="RmPreviewGLESWindow" API="" XML_VERSION="RenderMonkey 1.71"/>
+ <RmRegistryBranch NAME="RmPreviewGLWindow" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EffectPlacementRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Textured" 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="528" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="512" 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"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <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" 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[
+Terrain]]></RmTextDataBlock></RmStringVariable>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="-19" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="650" 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="382" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmTextureObjectEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Textured" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="81" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="105" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1283" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="434" 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="RmTextureGenerator" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmStreamEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Textured.Stream Mapping" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="258" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="128" 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="270" 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="WORKSPACE" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmStringVariable NAME="LAST_SAVE" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC=""><RmTextDataBlock TYPE="TEXT"><![CDATA[
+20/1/2008 12:42:24]]></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:\svn\redbook\Code\Chapter_13\Noise3D\]]></RmTextDataBlock></RmStringVariable>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmOpenGLESEffect NAME="Textured" API="OpenGL ES" ACTIVE_CAMERA="Camera">
+ <RmCamera NAME="Camera" API="" CAMERA_POSITION_X="-80.307373" CAMERA_POSITION_Y="12.115058" CAMERA_POSITION_Z="-182.767441" LOOK_AT_VECTOR_X="0.000000" LOOK_AT_VECTOR_Y="0.000000" LOOK_AT_VECTOR_Z="0.000000" UP_VECTOR_X="-0.012923" UP_VECTOR_Y="0.997336" UP_VECTOR_Z="0.071790" FOV="45.000000" NEAR_CLIP_PLANE="1.000000" FAR_CLIP_PLANE="1000.000000"/>
+ <RmFloatVariable NAME="u_fogMinDist" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="-200.000000" MIN="-1.000000" MAX="0.000000" CLAMP="FALSE"/>
+ <RmFloatVariable NAME="u_fogMaxDist" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="500.000000" MIN="-1.000000" MAX="1.000000" CLAMP="FALSE"/>
+ <RmVectorVariable NAME="u_eyePos" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewPosition" VALUE_0="-80.307373" VALUE_1="12.115058" VALUE_2="-182.767441" VALUE_3="1.000000" MIN="-10.000000" MAX="10.000000" CLAMP="FALSE" NORMALIZE="FALSE"/>
+ <RmMatrixVariable NAME="u_matView" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="View" VALUE_0="-0.915752" VALUE_1="-0.040636" VALUE_2="0.399684" VALUE_3="-0.000002" VALUE_4="-0.012923" VALUE_5="0.997336" VALUE_6="0.071790" VALUE_7="0.000279" VALUE_8="-0.401537" VALUE_9="0.060575" VALUE_10="-0.913837" VALUE_11="-199.999985" VALUE_12="0.000000" VALUE_13="0.000000" VALUE_14="0.000000" VALUE_15="1.000000"/>
+ <RmMatrixVariable NAME="u_matViewProjection" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewProjection" VALUE_0="-2.005162" VALUE_1="-0.088978" VALUE_2="0.875163" VALUE_3="-0.000005" VALUE_4="-0.031199" VALUE_5="2.407782" VALUE_6="0.173316" VALUE_7="0.000675" VALUE_8="0.401939" VALUE_9="-0.060636" VALUE_10="0.914752" VALUE_11="199.199188" VALUE_12="0.401537" VALUE_13="-0.060575" VALUE_14="0.913837" VALUE_15="199.999985"/>
+ <RmFloatVariable NAME="u_time" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="Time0_X" VALUE="100.126518" MIN="-1.000000" MAX="1.000000" CLAMP="FALSE"/>
+ <RmColorVariable NAME="u_fogColor" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE_0="1.000000" VALUE_1="1.000000" VALUE_2="1.000000" VALUE_3="0.000000"/>
+ <Rm2DTextureVariable NAME="base" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" FILE_NAME="Terrain.tga" ORIGIN="0"/>
+ <Rm3DTextureVariable NAME="NoiseVolume" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" FILE_NAME="NoiseVolume.dds" ORIGIN="0"/>
+ <RmStreamMap NAME="Stream Mapping" API="">
+ <RmStream NAME="Stream" API="" STRIDE="20">
+ <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_texCoord"/>
+ </RmStream>
+ </RmStreamMap>
+ <RmModelData NAME="Model" API="" FILE_NAME=".\Terrain.3ds" ORIENTATION="0"/>
+ <RmModelData NAME="SkyDome" API="" FILE_NAME=".\SkyDome.3ds" ORIENTATION="0"/>
+ <RmGLESPass NAME="Sky" API="OpenGL ES" PASS_INDEX="0" ENABLED="TRUE">
+ <RmCameraReference NAME="Camera" API="" USE_ACTIVE_CAMERA="FALSE"/>
+ <RmModelReference NAME="SkyDome" API=""/>
+ <RmRenderStateBlock NAME="Render State" API="OpenGL ES">
+ <RmState NAME="GL_FrontFace" API="OpenGL ES" STATE="7" VALUE="2" USAGE="RENDER_STATE"/>
+ </RmRenderStateBlock>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+uniform mat4 u_matViewProjection;
+attribute vec4 a_vertex;
+void main(void)
+{
+ gl_Position = u_matViewProjection * a_vertex;
+}]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+#ifdef GL_FRAGMENT_PRECISION_HIGH
+ // Default precision
+ precision highp float;
+#else
+ precision mediump float;
+#endif
+
+uniform vec4 u_fogColor;
+
+void main(void)
+{
+ gl_FragColor = u_fogColor;
+}]]></RmShaderCode></RmGLESShader>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmShaderConstant NAME="u_fogColor" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_matViewProjection" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ <RmGLESPass NAME="Terrain" API="OpenGL ES" PASS_INDEX="1" ENABLED="TRUE">
+ <RmCameraReference NAME="Camera" API="" USE_ACTIVE_CAMERA="FALSE"/>
+ <RmModelReference NAME="Model" API=""/>
+ <RmRenderStateBlock NAME="Render State" API="OpenGL ES">
+ <RmState NAME="GL_FrontFace" API="OpenGL ES" STATE="7" VALUE="1" USAGE="RENDER_STATE"/>
+ </RmRenderStateBlock>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+uniform mat4 u_matViewProjection;
+uniform mat4 u_matView;
+uniform vec4 u_eyePos;
+
+attribute vec4 a_vertex;
+attribute vec2 a_texCoord;
+
+varying vec2 v_texCoord;
+varying float v_eyeDist;
+
+void main( void )
+{
+ // Transform vertex to view-space
+ vec4 vViewPos = u_matView * a_vertex;
+
+ // Compute the distance to eye
+ v_eyeDist = sqrt( (vViewPos.x - u_eyePos.x) *
+ (vViewPos.x - u_eyePos.x) +
+ (vViewPos.y - u_eyePos.y) *
+ (vViewPos.y - u_eyePos.y) +
+ (vViewPos.z - u_eyePos.z) *
+ (vViewPos.z - u_eyePos.z) );
+
+ gl_Position = u_matViewProjection * a_vertex;
+ v_texCoord = a_texCoord.xy;
+}]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+#extension GL_OES_texture_3D : enable
+precision mediump float;
+
+uniform vec4 u_fogColor;
+uniform float u_fogMaxDist;
+uniform float u_fogMinDist;
+uniform float u_time;
+uniform sampler2D baseMap;
+uniform sampler3D noiseVolume;
+
+varying vec2 v_texCoord;
+varying float v_eyeDist;
+
+float computeLinearFogFactor()
+{
+ float factor;
+
+ // Compute linear fog equation
+ factor = (u_fogMaxDist - v_eyeDist) /
+ (u_fogMaxDist - u_fogMinDist );
+
+ return factor;
+}
+
+void main( void )
+{
+ float fogFactor = computeLinearFogFactor();
+ vec4 baseColor = texture2D( baseMap, v_texCoord );
+
+ // Distort fog factor by noise
+ vec3 noiseCoord;
+ noiseCoord.xy = v_texCoord.xy - ( u_time * 0.1 );
+ noiseCoord.z = u_time * 0.1;
+
+ fogFactor += texture3D( noiseVolume, noiseCoord ).r;
+ fogFactor = clamp ( fogFactor, 0.0, 1.0 );
+
+ // Compute final color as a lerp with fog factor
+ gl_FragColor = baseColor * fogFactor +
+ u_fogColor * (1.0 - fogFactor);
+}]]></RmShaderCode></RmGLESShader>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmTextureObject NAME="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="noiseVolume" API="OpenGL ES" STATE_INDEX="1" VERTEX_TEXTURE="FALSE">
+ <RmTextureReference NAME="NoiseVolume" API=""/>
+ </RmTextureObject>
+ <RmSampler NAME="baseMap" API="" REGISTER="-1"/>
+ <RmSampler NAME="noiseVolume" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_fogMaxDist" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_fogMinDist" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_matView" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_matViewProjection" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_time" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_eyePos" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_fogColor" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ </RmOpenGLESEffect>
+ </RmEffectWorkspace>
+</RENDER_MONKEY>
diff --git a/third_party/gles2_book/Chapter_13/Noise3D/NoiseVolume.dds b/third_party/gles2_book/Chapter_13/Noise3D/NoiseVolume.dds
new file mode 100644
index 0000000..bd8147d
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/Noise3D/NoiseVolume.dds
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/Noise3D/SkyDome.3ds b/third_party/gles2_book/Chapter_13/Noise3D/SkyDome.3ds
new file mode 100644
index 0000000..5994396
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/Noise3D/SkyDome.3ds
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/Noise3D/Terrain.3ds b/third_party/gles2_book/Chapter_13/Noise3D/Terrain.3ds
new file mode 100644
index 0000000..a46d787
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/Noise3D/Terrain.3ds
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/Noise3D/Terrain.tga b/third_party/gles2_book/Chapter_13/Noise3D/Terrain.tga
new file mode 100644
index 0000000..47d5117
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/Noise3D/Terrain.tga
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/Noise3D/generatenoise.c b/third_party/gles2_book/Chapter_13/Noise3D/generatenoise.c
new file mode 100644
index 0000000..a4c969b
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/Noise3D/generatenoise.c
@@ -0,0 +1,147 @@
+#include <stdlib.h>
+#include <math.h>
+
+// permTable describes a random permutatin of 8-bit values from 0 to 255.
+static unsigned char permTable[256] = {
+ 0xE1, 0x9B, 0xD2, 0x6C, 0xAF, 0xC7, 0xDD, 0x90, 0xCB, 0x74, 0x46, 0xD5, 0x45, 0x9E, 0x21, 0xFC,
+ 0x05, 0x52, 0xAD, 0x85, 0xDE, 0x8B, 0xAE, 0x1B, 0x09, 0x47, 0x5A, 0xF6, 0x4B, 0x82, 0x5B, 0xBF,
+ 0xA9, 0x8A, 0x02, 0x97, 0xC2, 0xEB, 0x51, 0x07, 0x19, 0x71, 0xE4, 0x9F, 0xCD, 0xFD, 0x86, 0x8E,
+ 0xF8, 0x41, 0xE0, 0xD9, 0x16, 0x79, 0xE5, 0x3F, 0x59, 0x67, 0x60, 0x68, 0x9C, 0x11, 0xC9, 0x81,
+ 0x24, 0x08, 0xA5, 0x6E, 0xED, 0x75, 0xE7, 0x38, 0x84, 0xD3, 0x98, 0x14, 0xB5, 0x6F, 0xEF, 0xDA,
+ 0xAA, 0xA3, 0x33, 0xAC, 0x9D, 0x2F, 0x50, 0xD4, 0xB0, 0xFA, 0x57, 0x31, 0x63, 0xF2, 0x88, 0xBD,
+ 0xA2, 0x73, 0x2C, 0x2B, 0x7C, 0x5E, 0x96, 0x10, 0x8D, 0xF7, 0x20, 0x0A, 0xC6, 0xDF, 0xFF, 0x48,
+ 0x35, 0x83, 0x54, 0x39, 0xDC, 0xC5, 0x3A, 0x32, 0xD0, 0x0B, 0xF1, 0x1C, 0x03, 0xC0, 0x3E, 0xCA,
+ 0x12, 0xD7, 0x99, 0x18, 0x4C, 0x29, 0x0F, 0xB3, 0x27, 0x2E, 0x37, 0x06, 0x80, 0xA7, 0x17, 0xBC,
+ 0x6A, 0x22, 0xBB, 0x8C, 0xA4, 0x49, 0x70, 0xB6, 0xF4, 0xC3, 0xE3, 0x0D, 0x23, 0x4D, 0xC4, 0xB9,
+ 0x1A, 0xC8, 0xE2, 0x77, 0x1F, 0x7B, 0xA8, 0x7D, 0xF9, 0x44, 0xB7, 0xE6, 0xB1, 0x87, 0xA0, 0xB4,
+ 0x0C, 0x01, 0xF3, 0x94, 0x66, 0xA6, 0x26, 0xEE, 0xFB, 0x25, 0xF0, 0x7E, 0x40, 0x4A, 0xA1, 0x28,
+ 0xB8, 0x95, 0xAB, 0xB2, 0x65, 0x42, 0x1D, 0x3B, 0x92, 0x3D, 0xFE, 0x6B, 0x2A, 0x56, 0x9A, 0x04,
+ 0xEC, 0xE8, 0x78, 0x15, 0xE9, 0xD1, 0x2D, 0x62, 0xC1, 0x72, 0x4E, 0x13, 0xCE, 0x0E, 0x76, 0x7F,
+ 0x30, 0x4F, 0x93, 0x55, 0x1E, 0xCF, 0xDB, 0x36, 0x58, 0xEA, 0xBE, 0x7A, 0x5F, 0x43, 0x8F, 0x6D,
+ 0x89, 0xD6, 0x91, 0x5D, 0x5C, 0x64, 0xF5, 0x00, 0xD8, 0xBA, 0x3C, 0x53, 0x69, 0x61, 0xCC, 0x34,
+ };
+
+#define NOISE_TABLE_MASK 255
+
+// lattice gradients 3D noise
+static float gradientTable[256*3];
+
+#define FLOOR(x) ((int)(x) - ((x) < 0 && (x) != (int)(x)))
+#define smoothstep(t) ( t * t * (3.0f - 2.0f * t) )
+#define lerp(t, a, b) ( a + t * (b - a) )
+
+void
+initNoiseTable()
+{
+ long rnd;
+ int i;
+ double a;
+ float x, y, z, r, theta;
+ float gradients[256*3];
+ unsigned int *p, *psrc;
+
+ srandom(0);
+
+ // build gradient table for 3D noise
+ for (i=0; i<256; i++)
+ {
+ /*
+ * calculate 1 - 2 * random number
+ */
+ rnd = random();
+ a = (random() & 0x7FFFFFFF) / (double) 0x7FFFFFFF;
+ z = (float)(1.0 - 2.0 * a);
+
+ r = (float)sqrt(1.0 - z * z); // r is radius of circle
+
+ rnd = random();
+ a = (float)((random() & 0x7FFFFFFF) / (double) 0x7FFFFFFF);
+ theta = (float)(2.0 * M_PI * a);
+ x = (float)(r * (float)cos(a));
+ y = (float)(r * (float)sin(a));
+
+ gradients[i*3] = x;
+ gradients[i*3+1] = y;
+ gradients[i*3+2] = z;
+ }
+
+ // use the index in the permutation table to load the
+ // gradient values from gradients to gradientTable
+ p = (unsigned int *)gradientTable;
+ psrc = (unsigned int *)gradients;
+ for (i=0; i<256; i++)
+ {
+ int indx = permTable[i];
+ p[i*3] = psrc[indx*3];
+ p[i*3+1] = psrc[indx*3+1];
+ p[i*3+2] = psrc[indx*3+2];
+ }
+}
+//
+// generate the value of gradient noise for a given lattice point
+//
+// (ix, iy, iz) specifies the 3D lattice position
+// (fx, fy, fz) specifies the fractional part
+//
+static float
+glattice3D(int ix, int iy, int iz, float fx, float fy, float fz)
+{
+ float *g;
+ int indx, y, z;
+
+ z = permTable[iz & NOISE_TABLE_MASK];
+ y = permTable[(iy + z) & NOISE_TABLE_MASK];
+ indx = (ix + y) & NOISE_TABLE_MASK;
+ g = &gradientTable[indx*3];
+
+ return (g[0]*fx + g[1]*fy + g[2]*fz);
+}
+
+//
+// generate the 3D noise value
+// f describes the input (x, y, z) position for which the noise value needs to be computed
+// noise3D returns the scalar noise value
+//
+float
+noise3D(float *f)
+{
+ int ix, iy, iz;
+ float fx0, fx1, fy0, fy1, fz0, fz1;
+ float wx, wy, wz;
+ float vx0, vx1, vy0, vy1, vz0, vz1;
+
+ ix = FLOOR(f[0]);
+ fx0 = f[0] - ix;
+ fx1 = fx0 - 1;
+ wx = smoothstep(fx0);
+
+ iy = FLOOR(f[1]);
+ fy0 = f[1] - iy;
+ fy1 = fy0 - 1;
+ wy = smoothstep(fy0);
+
+ iz = FLOOR(f[2]);
+ fz0 = f[2] - iz;
+ fz1 = fz0 - 1;
+ wz = smoothstep(fz0);
+
+ vx0 = glattice3D(ix, iy, iz, fx0, fy0, fz0);
+ vx1 = glattice3D(ix+1, iy, iz, fx1, fy0, fz0);
+ vy0 = lerp(wx, vx0, vx1);
+ vx0 = glattice3D(ix, iy+1, iz, fx0, fy1, fz0);
+ vx1 = glattice3D(ix+1, iy+1, iz, fx1, fy1, fz0);
+ vy1 = lerp(wx, vx0, vx1);
+ vz0 = lerp(wy, vy0, vy1);
+
+ vx0 = glattice3D(ix, iy, iz+1, fx0, fy0, fz1);
+ vx1 = glattice3D(ix+1, iy, iz+1, fx1, fy0, fz1);
+ vy0 = lerp(wx, vx0, vx1);
+ vx0 = glattice3D(ix, iy+1, iz+1, fx0, fy1, fz1);
+ vx1 = glattice3D(ix+1, iy+1, iz+1, fx1, fy1, fz1);
+ vy1 = lerp(wx, vx0, vx1);
+ vz1 = lerp(wy, vy0, vy1);
+
+ return lerp(wz, vz0, vz1);;
+}
+
+
diff --git a/third_party/gles2_book/Chapter_13/ParticleSystem/ParticleSystem.c b/third_party/gles2_book/Chapter_13/ParticleSystem/ParticleSystem.c
new file mode 100644
index 0000000..c6be9cf
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ParticleSystem/ParticleSystem.c
@@ -0,0 +1,294 @@
+//
+// Book: OpenGL(R) ES 2.0 Programming Guide
+// Authors: Aaftab Munshi, Dan Ginsburg, Dave Shreiner
+// ISBN-10: 0321502795
+// ISBN-13: 9780321502797
+// Publisher: Addison-Wesley Professional
+// URLs: http://safari.informit.com/9780321563835
+// http://www.opengles-book.com
+//
+
+// ParticleSystem.c
+//
+// This is an example that demonstrates rendering a particle system
+// using a vertex shader and point sprites.
+//
+#include <stdlib.h>
+#include <math.h>
+#include "esUtil.h"
+
+#define NUM_PARTICLES 1000
+#define PARTICLE_SIZE 7
+
+typedef struct
+{
+ // Handle to a program object
+ GLuint programObject;
+
+ // Attribute locations
+ GLint lifetimeLoc;
+ GLint startPositionLoc;
+ GLint endPositionLoc;
+
+ // Uniform location
+ GLint timeLoc;
+ GLint colorLoc;
+ GLint centerPositionLoc;
+ GLint samplerLoc;
+
+ // Texture handle
+ GLuint textureId;
+
+ // Particle vertex data
+ float particleData[ NUM_PARTICLES * PARTICLE_SIZE ];
+
+ // Current time
+ float time;
+
+} UserData;
+
+///
+// Load texture from disk
+//
+GLuint LoadTexture ( char *fileName )
+{
+ int width,
+ height;
+ char *buffer = esLoadTGA ( fileName, &width, &height );
+ GLuint texId;
+
+ if ( buffer == NULL )
+ {
+ esLogMessage ( "Error loading (%s) image.\n", fileName );
+ return 0;
+ }
+
+ glGenTextures ( 1, &texId );
+ glBindTexture ( GL_TEXTURE_2D, texId );
+
+ glTexImage2D ( GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, buffer );
+ glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
+ glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
+ glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
+ glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
+
+ free ( buffer );
+
+ return texId;
+}
+
+
+///
+// Initialize the shader and program object
+//
+int Init ( ESContext *esContext )
+{
+ UserData *userData = esContext->userData;
+ int i;
+
+ GLbyte vShaderStr[] =
+ "uniform float u_time; \n"
+ "uniform vec3 u_centerPosition; \n"
+ "attribute float a_lifetime; \n"
+ "attribute vec3 a_startPosition; \n"
+ "attribute vec3 a_endPosition; \n"
+ "varying float v_lifetime; \n"
+ "void main() \n"
+ "{ \n"
+ " if ( u_time <= a_lifetime ) \n"
+ " { \n"
+ " gl_Position.xyz = a_startPosition + \n"
+ " (u_time * a_endPosition); \n"
+ " gl_Position.xyz += u_centerPosition; \n"
+ " gl_Position.w = 1.0; \n"
+ " } \n"
+ " else \n"
+ " gl_Position = vec4( -1000, -1000, 0, 0 ); \n"
+ " v_lifetime = 1.0 - ( u_time / a_lifetime ); \n"
+ " v_lifetime = clamp ( v_lifetime, 0.0, 1.0 ); \n"
+ " gl_PointSize = ( v_lifetime * v_lifetime ) * 40.0; \n"
+ "}";
+
+ GLbyte fShaderStr[] =
+ "precision mediump float; \n"
+ "uniform vec4 u_color; \n"
+ "varying float v_lifetime; \n"
+ "uniform sampler2D s_texture; \n"
+ "void main() \n"
+ "{ \n"
+ " vec4 texColor; \n"
+ " texColor = texture2D( s_texture, gl_PointCoord ); \n"
+ " gl_FragColor = vec4( u_color ) * texColor; \n"
+ " gl_FragColor.a *= v_lifetime; \n"
+ "} \n";
+
+ // Load the shaders and get a linked program object
+ userData->programObject = esLoadProgram ( vShaderStr, fShaderStr );
+
+ // Get the attribute locations
+ userData->lifetimeLoc = glGetAttribLocation ( userData->programObject, "a_lifetime" );
+ userData->startPositionLoc = glGetAttribLocation ( userData->programObject, "a_startPosition" );
+ userData->endPositionLoc = glGetAttribLocation ( userData->programObject, "a_endPosition" );
+
+ // Get the uniform locations
+ userData->timeLoc = glGetUniformLocation ( userData->programObject, "u_time" );
+ userData->centerPositionLoc = glGetUniformLocation ( userData->programObject, "u_centerPosition" );
+ userData->colorLoc = glGetUniformLocation ( userData->programObject, "u_color" );
+ userData->samplerLoc = glGetUniformLocation ( userData->programObject, "s_texture" );
+
+ glClearColor ( 0.0f, 0.0f, 0.0f, 0.0f );
+
+ // Fill in particle data array
+ srand ( 0 );
+ for ( i = 0; i < NUM_PARTICLES; i++ )
+ {
+ float *particleData = &userData->particleData[i * PARTICLE_SIZE];
+
+ // Lifetime of particle
+ (*particleData++) = ( (float)(rand() % 10000) / 10000.0f );
+
+ // End position of particle
+ (*particleData++) = ( (float)(rand() % 10000) / 5000.0f ) - 1.0f;
+ (*particleData++) = ( (float)(rand() % 10000) / 5000.0f ) - 1.0f;
+ (*particleData++) = ( (float)(rand() % 10000) / 5000.0f ) - 1.0f;
+
+ // Start position of particle
+ (*particleData++) = ( (float)(rand() % 10000) / 40000.0f ) - 0.125f;
+ (*particleData++) = ( (float)(rand() % 10000) / 40000.0f ) - 0.125f;
+ (*particleData++) = ( (float)(rand() % 10000) / 40000.0f ) - 0.125f;
+
+ }
+
+ // Initialize time to cause reset on first update
+ userData->time = 1.0f;
+
+ userData->textureId = LoadTexture ( "smoke.tga" );
+ if ( userData->textureId <= 0 )
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+///
+// Update time-based variables
+//
+void Update ( ESContext *esContext, float deltaTime )
+{
+ UserData *userData = esContext->userData;
+
+ userData->time += deltaTime;
+
+ if ( userData->time >= 1.0f )
+ {
+ float centerPos[3];
+ float color[4];
+
+ userData->time = 0.0f;
+
+ // Pick a new start location and color
+ centerPos[0] = ( (float)(rand() % 10000) / 10000.0f ) - 0.5f;
+ centerPos[1] = ( (float)(rand() % 10000) / 10000.0f ) - 0.5f;
+ centerPos[2] = ( (float)(rand() % 10000) / 10000.0f ) - 0.5f;
+
+ glUniform3fv ( userData->centerPositionLoc, 1, &centerPos[0] );
+
+ // Random color
+ color[0] = ( (float)(rand() % 10000) / 20000.0f ) + 0.5f;
+ color[1] = ( (float)(rand() % 10000) / 20000.0f ) + 0.5f;
+ color[2] = ( (float)(rand() % 10000) / 20000.0f ) + 0.5f;
+ color[3] = 0.5;
+
+ glUniform4fv ( userData->colorLoc, 1, &color[0] );
+ }
+
+ // Load uniform time variable
+ glUniform1f ( userData->timeLoc, userData->time );
+}
+
+///
+// Draw a triangle using the shader pair created in Init()
+//
+void Draw ( ESContext *esContext )
+{
+ UserData *userData = esContext->userData;
+
+ // Set the viewport
+ glViewport ( 0, 0, esContext->width, esContext->height );
+
+ // Clear the color buffer
+ glClear ( GL_COLOR_BUFFER_BIT );
+
+ // Use the program object
+ glUseProgram ( userData->programObject );
+
+ // Load the vertex attributes
+ glVertexAttribPointer ( userData->lifetimeLoc, 1, GL_FLOAT,
+ GL_FALSE, PARTICLE_SIZE * sizeof(GLfloat),
+ userData->particleData );
+
+ glVertexAttribPointer ( userData->endPositionLoc, 3, GL_FLOAT,
+ GL_FALSE, PARTICLE_SIZE * sizeof(GLfloat),
+ &userData->particleData[1] );
+
+ glVertexAttribPointer ( userData->startPositionLoc, 3, GL_FLOAT,
+ GL_FALSE, PARTICLE_SIZE * sizeof(GLfloat),
+ &userData->particleData[4] );
+
+
+ glEnableVertexAttribArray ( userData->lifetimeLoc );
+ glEnableVertexAttribArray ( userData->endPositionLoc );
+ glEnableVertexAttribArray ( userData->startPositionLoc );
+ // Blend particles
+ glEnable ( GL_BLEND );
+ glBlendFunc ( GL_SRC_ALPHA, GL_ONE );
+
+ // Bind the texture
+ glActiveTexture ( GL_TEXTURE0 );
+ glBindTexture ( GL_TEXTURE_2D, userData->textureId );
+ glEnable ( GL_TEXTURE_2D );
+
+ // Set the sampler texture unit to 0
+ glUniform1i ( userData->samplerLoc, 0 );
+
+ glDrawArrays( GL_POINTS, 0, NUM_PARTICLES );
+
+ eglSwapBuffers ( esContext->eglDisplay, esContext->eglSurface );
+}
+
+///
+// Cleanup
+//
+void ShutDown ( ESContext *esContext )
+{
+ UserData *userData = esContext->userData;
+
+ // Delete texture object
+ glDeleteTextures ( 1, &userData->textureId );
+
+ // Delete program object
+ glDeleteProgram ( userData->programObject );
+}
+
+
+int main ( int argc, char *argv[] )
+{
+ ESContext esContext;
+ UserData userData;
+
+ esInitContext ( &esContext );
+ esContext.userData = &userData;
+
+ esCreateWindow ( &esContext, "ParticleSystem", 640, 480, ES_WINDOW_RGB );
+
+ if ( !Init ( &esContext ) )
+ return 0;
+
+ esRegisterDrawFunc ( &esContext, Draw );
+ esRegisterUpdateFunc ( &esContext, Update );
+
+ esMainLoop ( &esContext );
+
+ ShutDown ( &esContext );
+}
diff --git a/third_party/gles2_book/Chapter_13/ParticleSystem/smoke.tga b/third_party/gles2_book/Chapter_13/ParticleSystem/smoke.tga
new file mode 100644
index 0000000..06a0705
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ParticleSystem/smoke.tga
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/PerFragmentLighting/Fieldstone.tga b/third_party/gles2_book/Chapter_13/PerFragmentLighting/Fieldstone.tga
new file mode 100644
index 0000000..8acafae
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/PerFragmentLighting/Fieldstone.tga
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/PerFragmentLighting/FieldstoneBumpDOT3.tga b/third_party/gles2_book/Chapter_13/PerFragmentLighting/FieldstoneBumpDOT3.tga
new file mode 100644
index 0000000..6290f52
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/PerFragmentLighting/FieldstoneBumpDOT3.tga
Binary files differ
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>
diff --git a/third_party/gles2_book/Chapter_13/PerFragmentLighting/Torus.3ds b/third_party/gles2_book/Chapter_13/PerFragmentLighting/Torus.3ds
new file mode 100644
index 0000000..cceac9aa
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/PerFragmentLighting/Torus.3ds
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/PostProcess/Car.3ds b/third_party/gles2_book/Chapter_13/PostProcess/Car.3ds
new file mode 100644
index 0000000..fb261dc
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/PostProcess/Car.3ds
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/PostProcess/Cube.x b/third_party/gles2_book/Chapter_13/PostProcess/Cube.x
new file mode 100644
index 0000000..35c0f4c
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/PostProcess/Cube.x
@@ -0,0 +1,215 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+
+
+ FrameTransformMatrix {
+ 1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+
+
+ FrameTransformMatrix {
+ 10.000000,0.000000,0.000000,0.000000,0.000000,0.000000,10.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+ }
+
+ Frame persp {
+
+
+ FrameTransformMatrix {
+ -0.912120,-0.000000,0.409923,0.000000,0.165019,0.915393,0.367184,0.000000,-0.375241,0.402561,-0.834949,0.000000,-110.715416,118.776169,-246.352966,1.000000;;
+ }
+ }
+
+ Frame top {
+
+
+ FrameTransformMatrix {
+ 1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,-552.763062,10020.154297,128.411041,1.000000;;
+ }
+ }
+
+ Frame front {
+
+
+ FrameTransformMatrix {
+ 1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,64.176056,1999.952515,10134.481445,1.000000;;
+ }
+ }
+
+ Frame side {
+
+
+ FrameTransformMatrix {
+ 0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,10124.230469,1585.576538,76.173088,1.000000;;
+ }
+ }
+
+ Frame pCube1 {
+
+
+ FrameTransformMatrix {
+ 1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Mesh pCubeShape1 {
+ 24;
+ -50.000000;-50.000000;50.000000;,
+ 50.000000;-50.000000;50.000000;,
+ -50.000000;50.000000;50.000000;,
+ 50.000000;50.000000;50.000000;,
+ -50.000000;50.000000;-50.000000;,
+ 50.000000;50.000000;-50.000000;,
+ -50.000000;-50.000000;-50.000000;,
+ 50.000000;-50.000000;-50.000000;,
+ -50.000000;50.000000;50.000000;,
+ 50.000000;50.000000;50.000000;,
+ -50.000000;50.000000;-50.000000;,
+ 50.000000;50.000000;-50.000000;,
+ -50.000000;-50.000000;-50.000000;,
+ 50.000000;-50.000000;-50.000000;,
+ 50.000000;-50.000000;50.000000;,
+ -50.000000;-50.000000;50.000000;,
+ 50.000000;-50.000000;50.000000;,
+ 50.000000;-50.000000;-50.000000;,
+ 50.000000;50.000000;-50.000000;,
+ 50.000000;50.000000;50.000000;,
+ -50.000000;-50.000000;-50.000000;,
+ -50.000000;-50.000000;50.000000;,
+ -50.000000;50.000000;50.000000;,
+ -50.000000;50.000000;-50.000000;;
+ 6;
+ 4;0,1,3,2;,
+ 4;8,9,5,4;,
+ 4;10,11,7,6;,
+ 4;12,13,14,15;,
+ 4;16,17,18,19;,
+ 4;20,21,22,23;;
+
+ MeshNormals {
+ 6;
+ -1.000000;0.000000;0.000000;,
+ 0.000000;-1.000000;0.000000;,
+ 0.000000;0.000000;-1.000000;,
+ 0.000000;0.000000;1.000000;,
+ 0.000000;1.000000;0.000000;,
+ 1.000000;0.000000;0.000000;;
+ 6;
+ 4;3,3,3,3;,
+ 4;4,4,4,4;,
+ 4;2,2,2,2;,
+ 4;1,1,1,1;,
+ 4;5,5,5,5;,
+ 4;0,0,0,0;;
+ }
+
+ MeshTextureCoords {
+ 24;
+ 0.000000;0.000000;,
+ 1.000000;0.000000;,
+ 0.000000;-1.000000;,
+ 1.000000;-1.000000;,
+ 0.000000;-2.000000;,
+ 1.000000;-2.000000;,
+ 0.000000;-3.000000;,
+ 1.000000;-3.000000;,
+ 0.000000;-1.000000;,
+ 1.000000;-1.000000;,
+ 0.000000;-2.000000;,
+ 1.000000;-2.000000;,
+ 0.000000;-3.000000;,
+ 1.000000;-3.000000;,
+ 1.000000;-4.000000;,
+ 0.000000;-4.000000;,
+ 1.000000;0.000000;,
+ 2.000000;0.000000;,
+ 2.000000;-1.000000;,
+ 1.000000;-1.000000;,
+ -1.000000;0.000000;,
+ 0.000000;0.000000;,
+ 0.000000;-1.000000;,
+ -1.000000;-1.000000;;
+ }
+
+ MeshMaterialList {
+ 1;
+ 6;
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0;
+
+ Material Arm_left {
+ 0.800000;0.800000;0.800000;1.000000;;
+ 0.500000;
+ 0.500000;0.500000;0.500000;;
+ 0.000000;0.000000;0.000000;;
+
+ TextureFilename {
+ "../Tex/EX_1_c0_arm_left.png";
+ }
+ }
+ }
+
+ VertexDuplicationIndices {
+ 24;
+ 8;
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 1,
+ 0,
+ 1,
+ 7,
+ 5,
+ 3,
+ 6,
+ 0,
+ 2,
+ 4;
+ }
+ }
+ }
+}
+
+AnimationSet {
+
+} \ No newline at end of file
diff --git a/third_party/gles2_book/Chapter_13/PostProcess/Fieldstone.tga b/third_party/gles2_book/Chapter_13/PostProcess/Fieldstone.tga
new file mode 100644
index 0000000..8acafae
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/PostProcess/Fieldstone.tga
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/PostProcess/PostProcess.rfx b/third_party/gles2_book/Chapter_13/PostProcess/PostProcess.rfx
new file mode 100644
index 0000000..d8e7047
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/PostProcess/PostProcess.rfx
@@ -0,0 +1,1395 @@
+<?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.PostProcess Effects.Simple Blur" 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>13</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>13</LastHolder></Pane-1><Pane-2><Type>0</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Title>u_blurStep</Title><ID>1100</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>7</DockingHolder><FloatingHolder>18</FloatingHolder><LastHolder>18</LastHolder></Pane-2><Pane-3><Type>2</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><Horiz>1</Horiz><Pane-1>4</Pane-1><Pane-2>5</Pane-2><Pane-3>6</Pane-3><Pane-4>7</Pane-4><Pane-5>8</Pane-5><Panes>5</Panes></Pane-3><Pane-4><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-4><Pane-5><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-5><Pane-6><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-6><Pane-7><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-7><Pane-8><Type>2</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><Horiz>0</Horiz><Pane-1>9</Pane-1><Pane-2>14</Pane-2><Panes>2</Panes></Pane-8><Pane-9><Type>2</Type><DockingCX>0</DockingCX><DockingCY>791</DockingCY><Horiz>1</Horiz><Pane-1>10</Pane-1><Pane-2>12</Pane-2><Pane-3>13</Pane-3><Panes>3</Panes></Pane-9><Pane-10><Type>1</Type><DockingCX>336</DockingCX><DockingCY>250</DockingCY><Selected>11</Selected><Panes>1</Panes><Pane-1>11</Pane-1></Pane-10><Pane-11><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Workspace</Title><ID>1000</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>10</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>10</LastHolder></Pane-11><Pane-12><Type>4</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY></Pane-12><Pane-13><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-13><Pane-14><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>15</Selected><Panes>1</Panes><Pane-1>15</Pane-1></Pane-14><Pane-15><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Output</Title><ID>1002</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>14</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>14</LastHolder></Pane-15><Pane-16><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>17</TopContaner><WindowRectTopPos>32</WindowRectTopPos><WindowRectBottomPos>160</WindowRectBottomPos><WindowRectLeftPos>0</WindowRectLeftPos><WindowRectRightPos>566</WindowRectRightPos></Pane-16><Pane-17><Type>2</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Horiz>1</Horiz><Pane-1>18</Pane-1><Panes>1</Panes></Pane-17><Pane-18><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-18><Pane-19><Type>0</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Title>u_blurStep</Title><ID>1101</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>6</DockingHolder><FloatingHolder>22</FloatingHolder><LastHolder>22</LastHolder></Pane-19><Pane-20><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>21</TopContaner><WindowRectTopPos>32</WindowRectTopPos><WindowRectBottomPos>160</WindowRectBottomPos><WindowRectLeftPos>0</WindowRectLeftPos><WindowRectRightPos>566</WindowRectRightPos></Pane-20><Pane-21><Type>2</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Horiz>1</Horiz><Pane-1>22</Pane-1><Panes>1</Panes></Pane-21><Pane-22><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-22><Pane-23><Type>0</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Title>u_blurStep</Title><ID>1102</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>5</DockingHolder><FloatingHolder>26</FloatingHolder><LastHolder>26</LastHolder></Pane-23><Pane-24><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>25</TopContaner><WindowRectTopPos>32</WindowRectTopPos><WindowRectBottomPos>160</WindowRectBottomPos><WindowRectLeftPos>0</WindowRectLeftPos><WindowRectRightPos>566</WindowRectRightPos></Pane-24><Pane-25><Type>2</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Horiz>1</Horiz><Pane-1>26</Pane-1><Panes>1</Panes></Pane-25><Pane-26><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-26><Pane-27><Type>0</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Title>u_blurStep</Title><ID>1103</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>4</DockingHolder><FloatingHolder>30</FloatingHolder><LastHolder>30</LastHolder></Pane-27><Pane-28><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>29</TopContaner><WindowRectTopPos>32</WindowRectTopPos><WindowRectBottomPos>160</WindowRectBottomPos><WindowRectLeftPos>0</WindowRectLeftPos><WindowRectRightPos>566</WindowRectRightPos></Pane-28><Pane-29><Type>2</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Horiz>1</Horiz><Pane-1>30</Pane-1><Panes>1</Panes></Pane-29><Pane-30><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-30><Summary><TopContainer>3</TopContainer><Client>12</Client><Panes>30</Panes></Summary></Application_Layout></DockingPaneLayouts>
+]]></RmTextDataBlock>
+ <RmRegistryBranch NAME="RmPreviewDx9Window" API="" XML_VERSION="RenderMonkey 1.71"/>
+ <RmRegistryBranch NAME="RmPreviewGLESWindow" API="" XML_VERSION="RenderMonkey 1.71"/>
+ <RmRegistryBranch NAME="RmPreviewGLWindow" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EffectPlacementRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.PostProcess Effects.Simple Blur" 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="350" 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="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"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="Effect Workspace.PostProcess Effects.Bloom" 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="471" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="479" 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="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 NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.PostProcess Effects.Bloom.renderTexture" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="256" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="102" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="278" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="442" 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 NAME="Effect Workspace.PostProcess Effects.Bloom.renderTexture1" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="344" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="128" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="278" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="442" 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 NAME="Effect Workspace.PostProcess Effects.Simple Blur.renderTexture" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="344" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="128" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="278" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="442" 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="RmRenderTargetEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.PostProcess Effects.Bloom.Draw Object Outline to Texture.renderTexture" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="344" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="128" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="316" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="296" 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="RmRenderStateBlockEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.PostProcess Effects.Bloom" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="408" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="244" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1149" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="514" 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="RmTextureObjectEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.PostProcess Effects.Bloom" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="202" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="275" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1063" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="514" 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="RmTextureGenerator" 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.PostProcess Effects.Simple Blur" 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[
+Vertex 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="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="650" 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="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"/>
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="Effect Workspace.PostProcess Effects.Bloom" 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[
+Vertex Program]]></RmTextDataBlock></RmStringVariable>
+ <RmStringVariable NAME="Editing Pass" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC=""><RmTextDataBlock TYPE="TEXT"><![CDATA[
+Draw to Screen]]></RmTextDataBlock></RmStringVariable>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="33" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="650" 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="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"/>
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="72" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmStreamEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Textured.Stream Mapping" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="258" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="128" 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="270" 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="RmScalarEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.PostProcess Effects.Bloom.Blur Pass 1.u_blurStep" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1101" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="Effect Workspace.PostProcess Effects.Bloom.Blur Pass 2.u_blurStep" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1102" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="Effect Workspace.PostProcess Effects.Bloom.Draw to Screen.u_blurStep" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1103" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </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[
+18/1/2008 11:15:10]]></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:\svn\redbook\Code\Chapter_13\PostProcess\]]></RmTextDataBlock></RmStringVariable>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmEffectGroup NAME="PostProcess Effects" API="">
+ <RmOpenGLESEffect NAME="Simple Blur" API="OpenGL ES" ACTIVE_CAMERA="Camera">
+ <RmCamera NAME="Camera" API="" CAMERA_POSITION_X="83.595619" CAMERA_POSITION_Y="229.281082" CAMERA_POSITION_Z="39.789570" LOOK_AT_VECTOR_X="0.000000" LOOK_AT_VECTOR_Y="0.000000" LOOK_AT_VECTOR_Z="0.000000" UP_VECTOR_X="-0.506225" UP_VECTOR_Y="0.035030" UP_VECTOR_Z="0.861690" FOV="45.000000" NEAR_CLIP_PLANE="1.000000" FAR_CLIP_PLANE="1000.000000"/>
+ <RmFloatVariable NAME="u_blurStep" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="SinTime0_X" VALUE="0.974171" MIN="0.000000" MAX="0.010000" CLAMP="TRUE"/>
+ <RmMatrixVariable NAME="u_matViewProjection" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewProjection" VALUE_0="2.185649" VALUE_1="0.000000" VALUE_2="0.000000" VALUE_3="0.000000" VALUE_4="0.000000" VALUE_5="2.414213" VALUE_6="0.000000" VALUE_7="0.000000" VALUE_8="0.000000" VALUE_9="0.000000" VALUE_10="-1.001001" VALUE_11="199.199203" VALUE_12="0.000000" VALUE_13="0.000000" VALUE_14="-1.000000" VALUE_15="200.000000"/>
+ <Rm2DTextureVariable NAME="base" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" FILE_NAME="Fieldstone.tga" ORIGIN="0"/>
+ <RmRenderableTexture NAME="renderTexture" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" FILE_NAME="" ORIGIN="0" WIDTH="512" HEIGHT="512" FORMAT="21" USE_VIEWPORT_DIMENSIONS="FALSE" GENERATE_MIPMAPS="TRUE" WIDTH_RATIO="1.000000" HEIGHT_RATIO="1.000000"/>
+ <RmStreamMap NAME="Stream Mapping" API="">
+ <RmStream NAME="Stream" API="" STRIDE="20">
+ <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"/>
+ </RmStream>
+ </RmStreamMap>
+ <RmModelData NAME="Model" API="" FILE_NAME=".\Cube.x" ORIENTATION="0"/>
+ <RmModelData NAME="ScreenAlignedQuad" API="" FILE_NAME=".\ScreenAlignedQuad.3ds" ORIENTATION="0"/>
+ <RmGLESPass NAME="Pass 0" API="OpenGL ES" PASS_INDEX="0" ENABLED="TRUE">
+ <RmCameraReference NAME="Camera" API="" USE_ACTIVE_CAMERA="FALSE"/>
+ <RmModelReference NAME="Model" API=""/>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+precision mediump float;
+
+uniform sampler2D baseMap;
+varying vec2 v_texCoord;
+
+void main( void )
+{
+ gl_FragColor = texture2D( baseMap, v_texCoord );
+}]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+uniform mat4 u_matViewProjection;
+attribute vec4 a_vertex;
+attribute vec2 a_texCoord0;
+varying vec2 v_texCoord;
+
+void main( void )
+{
+ gl_Position = u_matViewProjection * a_vertex;
+ v_texCoord = a_texCoord0.xy;
+}]]></RmShaderCode></RmGLESShader>
+ <RmRenderTarget NAME="renderTexture" API="" INDEX="0" RENDER_TO_SCREEN="FALSE" COLOR_CLEAR="TRUE" DEPTH_CLEAR="TRUE" CLEAR_COLOR_VALUE="-16777216" DEPTH_CLEAR_VALUE="1.000000"/>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmTextureObject NAME="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>
+ <RmSampler NAME="baseMap" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_matViewProjection" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ <RmGLESPass NAME="Pass 1" API="OpenGL ES" PASS_INDEX="1" ENABLED="TRUE">
+ <RmModelReference NAME="ScreenAlignedQuad" API=""/>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+attribute vec4 a_vertex;
+varying vec2 v_texCoord;
+
+void main(void)
+{
+ vec2 P = sign( a_vertex.xy );
+ gl_Position = vec4( P, 0.0, 1.0 );
+
+ v_texCoord = P * 0.5 + 0.5;
+}]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+precision mediump float;
+uniform sampler2D renderTexture;
+varying vec2 v_texCoord;
+uniform float u_blurStep;
+
+void main(void)
+{
+ vec4 sample0,
+ sample1,
+ sample2,
+ sample3;
+
+ float step = u_blurStep / 100.0;
+
+ sample0 = texture2D ( renderTexture,
+ vec2 ( v_texCoord.x - step, v_texCoord.y - step ) );
+ sample1 = texture2D ( renderTexture,
+ vec2 ( v_texCoord.x + step, v_texCoord.y + step ) );
+ sample2 = texture2D ( renderTexture,
+ vec2 ( v_texCoord.x + step, v_texCoord.y - step ) );
+ sample3 = texture2D ( renderTexture,
+ vec2 ( v_texCoord.x - step, v_texCoord.y + step) );
+
+ gl_FragColor = (sample0 + sample1 + sample2 + sample3) / 4.0;
+}]]></RmShaderCode></RmGLESShader>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmTextureObject NAME="renderTexture" API="OpenGL ES" STATE_INDEX="0" VERTEX_TEXTURE="FALSE">
+ <RmTextureReference NAME="renderTexture" API=""/>
+ </RmTextureObject>
+ <RmSampler NAME="renderTexture" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_blurStep" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ </RmOpenGLESEffect>
+ <RmOpenGLESEffect NAME="Bloom" API="OpenGL ES" ACTIVE_CAMERA="Camera">
+ <RmCamera NAME="Camera" API="" CAMERA_POSITION_X="33.139557" CAMERA_POSITION_Y="-92.293312" CAMERA_POSITION_Z="55.385082" LOOK_AT_VECTOR_X="-9.544210" LOOK_AT_VECTOR_Y="-3.399710" LOOK_AT_VECTOR_Z="0.434872" UP_VECTOR_X="-0.471409" UP_VECTOR_Y="0.288774" UP_VECTOR_Z="0.833297" FOV="45.000000" NEAR_CLIP_PLANE="60.290936" FAR_CLIP_PLANE="1169.461426"/>
+ <RmMatrixVariable NAME="u_matViewProjection" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewProjection" VALUE_0="2.287980" VALUE_1="0.000000" VALUE_2="0.000000" VALUE_3="0.000000" VALUE_4="0.000000" VALUE_5="2.414213" VALUE_6="0.000000" VALUE_7="0.000000" VALUE_8="0.000000" VALUE_9="0.000000" VALUE_10="-1.001001" VALUE_11="199.199203" VALUE_12="0.000000" VALUE_13="0.000000" VALUE_14="-1.000000" VALUE_15="200.000000"/>
+ <Rm2DTextureVariable NAME="base" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" FILE_NAME="Fieldstone.tga" ORIGIN="0"/>
+ <RmRenderableTexture NAME="renderTexture" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" FILE_NAME="" ORIGIN="0" WIDTH="128" HEIGHT="128" FORMAT="21" USE_VIEWPORT_DIMENSIONS="FALSE" GENERATE_MIPMAPS="TRUE" WIDTH_RATIO="1.000000" HEIGHT_RATIO="1.000000"/>
+ <RmRenderableTexture NAME="renderTexture1" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" FILE_NAME="" ORIGIN="0" WIDTH="128" HEIGHT="128" FORMAT="21" USE_VIEWPORT_DIMENSIONS="FALSE" GENERATE_MIPMAPS="TRUE" WIDTH_RATIO="1.000000" HEIGHT_RATIO="1.000000"/>
+ <RmStreamMap NAME="Stream Mapping" API="">
+ <RmStream NAME="Stream" API="" STRIDE="20">
+ <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"/>
+ </RmStream>
+ </RmStreamMap>
+ <RmModelData NAME="ScreenAlignedQuad" API="" FILE_NAME=".\ScreenAlignedQuad.3ds" ORIENTATION="0"/>
+ <RmModelData NAME="Model" API="" FILE_NAME=".\Car.3ds" ORIENTATION="0"/>
+ <RmGLESPass NAME="Draw Object Outline to Texture" API="OpenGL ES" PASS_INDEX="0" ENABLED="TRUE">
+ <RmCameraReference NAME="Camera" API="" USE_ACTIVE_CAMERA="FALSE"/>
+ <RmModelReference NAME="Model" API=""/>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+precision mediump float;
+
+uniform sampler2D baseMap;
+varying vec2 v_texCoord;
+
+void main( void )
+{
+ gl_FragColor = vec4( 0.0 );
+}]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+uniform mat4 u_matViewProjection;
+attribute vec4 a_vertex;
+attribute vec2 a_texCoord0;
+varying vec2 v_texCoord;
+
+void main( void )
+{
+ gl_Position = u_matViewProjection * a_vertex;
+ v_texCoord = a_texCoord0.xy;
+}]]></RmShaderCode></RmGLESShader>
+ <RmRenderTarget NAME="renderTexture" API="" INDEX="0" RENDER_TO_SCREEN="FALSE" COLOR_CLEAR="TRUE" DEPTH_CLEAR="TRUE" CLEAR_COLOR_VALUE="786431" DEPTH_CLEAR_VALUE="1.000000"/>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmTextureObject NAME="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>
+ <RmShaderConstant NAME="u_matViewProjection" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ <RmGLESPass NAME="Blur Pass 1" API="OpenGL ES" PASS_INDEX="1" ENABLED="TRUE">
+ <RmModelReference NAME="ScreenAlignedQuad" API=""/>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+attribute vec4 a_vertex;
+varying vec2 v_texCoord;
+
+void main(void)
+{
+ vec2 P = sign( a_vertex.xy );
+ gl_Position = vec4( P, 0.0, 1.0 );
+
+ v_texCoord = P * 0.5 + 0.5;
+}]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+precision mediump float;
+uniform sampler2D renderTexture;
+varying vec2 v_texCoord;
+uniform float u_blurStep;
+
+void main(void)
+{
+ vec4 sample0,
+ sample1,
+ sample2,
+ sample3;
+
+ float step = u_blurStep / 100.0;
+
+ sample0 = texture2D ( renderTexture,
+ vec2 ( v_texCoord.x - step, v_texCoord.y - step ) );
+ sample1 = texture2D ( renderTexture,
+ vec2 ( v_texCoord.x + step, v_texCoord.y + step ) );
+ sample2 = texture2D ( renderTexture,
+ vec2 ( v_texCoord.x + step, v_texCoord.y - step ) );
+ sample3 = texture2D ( renderTexture,
+ vec2 ( v_texCoord.x - step, v_texCoord.y + step) );
+
+ gl_FragColor = (sample0 + sample1 + sample2 + sample3) / 4.0;
+}]]></RmShaderCode></RmGLESShader>
+ <RmRenderTarget NAME="renderTexture1" API="" INDEX="0" RENDER_TO_SCREEN="FALSE" COLOR_CLEAR="TRUE" DEPTH_CLEAR="TRUE" CLEAR_COLOR_VALUE="-16777216" DEPTH_CLEAR_VALUE="1.000000"/>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmFloatVariable NAME="u_blurStep" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE="1.000000" MIN="0.000000" MAX="0.000000" CLAMP="FALSE"/>
+ <RmTextureObject NAME="renderTexture" API="OpenGL ES" STATE_INDEX="0" VERTEX_TEXTURE="FALSE">
+ <RmTextureReference NAME="renderTexture" API=""/>
+ </RmTextureObject>
+ <RmSampler NAME="renderTexture" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_blurStep" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ <RmGLESPass NAME="Blur Pass 2" API="OpenGL ES" PASS_INDEX="2" ENABLED="TRUE">
+ <RmModelReference NAME="ScreenAlignedQuad" API=""/>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+attribute vec4 a_vertex;
+varying vec2 v_texCoord;
+
+void main(void)
+{
+ vec2 P = sign( a_vertex.xy );
+ gl_Position = vec4( P, 0.0, 1.0 );
+
+ v_texCoord = P * 0.5 + 0.5;
+}]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+precision mediump float;
+uniform sampler2D renderTexture1;
+varying vec2 v_texCoord;
+uniform float u_blurStep;
+
+void main(void)
+{
+ vec4 sample0,
+ sample1,
+ sample2,
+ sample3;
+
+ float step = u_blurStep / 100.0;
+
+ sample0 = texture2D ( renderTexture1,
+ vec2 ( v_texCoord.x - step, v_texCoord.y - step ) );
+ sample1 = texture2D ( renderTexture1,
+ vec2 ( v_texCoord.x + step, v_texCoord.y + step ) );
+ sample2 = texture2D ( renderTexture1,
+ vec2 ( v_texCoord.x + step, v_texCoord.y - step ) );
+ sample3 = texture2D ( renderTexture1,
+ vec2 ( v_texCoord.x - step, v_texCoord.y + step) );
+
+ gl_FragColor = (sample0 + sample1 + sample2 + sample3) / 4.0;
+}]]></RmShaderCode></RmGLESShader>
+ <RmRenderTarget NAME="renderTexture" API="" INDEX="0" RENDER_TO_SCREEN="FALSE" COLOR_CLEAR="TRUE" DEPTH_CLEAR="TRUE" CLEAR_COLOR_VALUE="-16777216" DEPTH_CLEAR_VALUE="1.000000"/>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmFloatVariable NAME="u_blurStep" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE="2.000000" MIN="0.000000" MAX="0.000000" CLAMP="FALSE"/>
+ <RmTextureObject NAME="renderTexture1" API="OpenGL ES" STATE_INDEX="0" VERTEX_TEXTURE="FALSE">
+ <RmTextureReference NAME="renderTexture1" API=""/>
+ </RmTextureObject>
+ <RmSampler NAME="renderTexture1" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_blurStep" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ <RmGLESPass NAME="Draw Object to Screen" API="OpenGL ES" PASS_INDEX="3" ENABLED="TRUE">
+ <RmCameraReference NAME="Camera" API="" USE_ACTIVE_CAMERA="FALSE"/>
+ <RmModelReference NAME="Model" API=""/>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+precision mediump float;
+
+uniform sampler2D baseMap;
+varying vec2 v_texCoord;
+
+void main( void )
+{
+ gl_FragColor = texture2D( baseMap, v_texCoord );
+}]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+uniform mat4 u_matViewProjection;
+attribute vec4 a_vertex;
+attribute vec2 a_texCoord0;
+varying vec2 v_texCoord;
+
+void main( void )
+{
+ gl_Position = u_matViewProjection * a_vertex;
+ v_texCoord = a_texCoord0.xy;
+}]]></RmShaderCode></RmGLESShader>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmTextureObject NAME="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>
+ <RmSampler NAME="baseMap" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_matViewProjection" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ <RmGLESPass NAME="Draw to Screen" API="OpenGL ES" PASS_INDEX="4" ENABLED="TRUE">
+ <RmModelReference NAME="ScreenAlignedQuad" API=""/>
+ <RmRenderStateBlock NAME="Render State" API="OpenGL ES">
+ <RmState NAME="GL_BlendSourceRGB" API="OpenGL ES" STATE="48" VALUE="2" USAGE="RENDER_STATE"/>
+ <RmState NAME="GL_BlendDestRGB" API="OpenGL ES" STATE="49" VALUE="2" USAGE="RENDER_STATE"/>
+ <RmState NAME="GL_BlendEnable" API="OpenGL ES" STATE="46" VALUE="1" USAGE="RENDER_STATE"/>
+ </RmRenderStateBlock>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+precision mediump float;
+uniform sampler2D renderTexture;
+varying vec2 v_texCoord;
+
+void main(void)
+{
+ gl_FragColor = texture2D( renderTexture, v_texCoord );
+}]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+attribute vec4 a_vertex;
+varying vec2 v_texCoord;
+
+void main(void)
+{
+ vec2 P = sign( a_vertex.xy );
+ gl_Position = vec4( P, 0.0, 1.0 );
+
+ v_texCoord = P * 0.5 + 0.5;
+}]]></RmShaderCode></RmGLESShader>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmTextureObject NAME="renderTexture" API="OpenGL ES" STATE_INDEX="0" VERTEX_TEXTURE="FALSE">
+ <RmTextureReference NAME="renderTexture" API=""/>
+ </RmTextureObject>
+ <RmSampler NAME="renderTexture" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ </RmOpenGLESEffect>
+ </RmEffectGroup>
+ </RmEffectWorkspace>
+</RENDER_MONKEY>
diff --git a/third_party/gles2_book/Chapter_13/PostProcess/ScreenAlignedQuad.3ds b/third_party/gles2_book/Chapter_13/PostProcess/ScreenAlignedQuad.3ds
new file mode 100644
index 0000000..619124b
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/PostProcess/ScreenAlignedQuad.3ds
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/ProceduralTextures/Checker.rfx b/third_party/gles2_book/Chapter_13/ProceduralTextures/Checker.rfx
new file mode 100644
index 0000000..3da57a8
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ProceduralTextures/Checker.rfx
@@ -0,0 +1,1081 @@
+<?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.Position" 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>7</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>7</LastHolder></Pane-1><Pane-2><Type>2</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><Horiz>0</Horiz><Pane-1>3</Pane-1><Pane-2>8</Pane-2><Panes>2</Panes></Pane-2><Pane-3><Type>2</Type><DockingCX>0</DockingCX><DockingCY>808</DockingCY><Horiz>1</Horiz><Pane-1>4</Pane-1><Pane-2>6</Pane-2><Pane-3>7</Pane-3><Panes>3</Panes></Pane-3><Pane-4><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>5</Selected><Panes>1</Panes><Pane-1>5</Pane-1></Pane-4><Pane-5><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Workspace</Title><ID>1000</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>4</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>4</LastHolder></Pane-5><Pane-6><Type>4</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY></Pane-6><Pane-7><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-7><Pane-8><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>9</Selected><Panes>1</Panes><Pane-1>9</Pane-1></Pane-8><Pane-9><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Output</Title><ID>1002</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>8</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>8</LastHolder></Pane-9><Summary><TopContainer>2</TopContainer><Client>6</Client><Panes>9</Panes></Summary></Application_Layout></DockingPaneLayouts>
+]]></RmTextDataBlock>
+ <RmRegistryBranch NAME="RmRenderStateBlockEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="54" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="70" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1283" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="434" 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="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmStreamEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position.Stream Mapping" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="459" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="323" 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="270" 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="RmPreviewGLWindow" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EffectPlacementRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position" 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="350" 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="RmColorEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position.u_color1" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1100" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmBooleanVariable NAME="FloatingPoint" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="FALSE"/>
+ <RmIntegerVariable NAME="ColorType" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmBooleanVariable NAME="LargeSize" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="TRUE"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmDynamicVariableEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position.u_frequency" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1101" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmBooleanVariable NAME="ShowSetup" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="TRUE"/>
+ </RmRegistryBranch>
+ </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.Position" 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="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="967" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="718" 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="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ </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[
+20/1/2008 22:54:49]]></RmTextDataBlock></RmStringVariable>
+ <RmStringVariable NAME="VERSION" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC=""><RmTextDataBlock TYPE="TEXT"><![CDATA[
+RenderMonkey Version 1.71 (build 59)]]></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[
+C:\book\ogles\Code\Chapter_13\ProceduralTextures\]]></RmTextDataBlock></RmStringVariable>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmOpenGLESEffect NAME="Position" API="OpenGL ES" ACTIVE_CAMERA="Camera">
+ <RmCamera NAME="Camera" API="" CAMERA_POSITION_X="1.482474" CAMERA_POSITION_Y="-1.227030" CAMERA_POSITION_Z="-2.968942" LOOK_AT_VECTOR_X="0.001000" LOOK_AT_VECTOR_Y="0.001000" LOOK_AT_VECTOR_Z="0.001000" UP_VECTOR_X="-0.087063" UP_VECTOR_Y="0.904525" UP_VECTOR_Z="-0.417437" FOV="45.000000" NEAR_CLIP_PLANE="1.207107" FAR_CLIP_PLANE="23.414213"/>
+ <RmDynamicVariable NAME="u_frequency" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VARIABLE_TYPE="INTEGER" ROWS="1" COLUMNS="1" FIXED_SIZE="TRUE" MIN="-100" MAX="100" CLAMP="FALSE" NORMALIZE="FALSE">
+ <RmDynamicVariableValueContainer>
+ <RmDynamicVariableValue ROW_INDEX="0" COLUMN_INDEX="0" VALUE="6"/>
+ </RmDynamicVariableValueContainer>
+ </RmDynamicVariable>
+ <RmMatrixVariable NAME="u_mvpMatrix" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewProjection" VALUE_0="-2.014508" VALUE_1="-0.552268" VALUE_2="-0.776526" VALUE_3="0.003343" VALUE_4="-0.210189" VALUE_5="2.183717" VALUE_6="-1.007783" VALUE_7="-0.000962" VALUE_8="-0.441388" VALUE_9="0.365878" VALUE_10="0.884861" VALUE_11="2.457668" VALUE_12="-0.418633" VALUE_13="0.347015" VALUE_14="0.839242" VALUE_15="3.538071"/>
+ <RmColorVariable NAME="u_color1" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE_0="0.000000" VALUE_1="0.000000" VALUE_2="0.000000" VALUE_3="1.000000"/>
+ <RmColorVariable NAME="u_color0" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE_0="1.000000" VALUE_1="1.000000" VALUE_2="1.000000" VALUE_3="1.000000"/>
+ <RmStreamMap NAME="Stream Mapping" API="">
+ <RmStream NAME="Stream" API="" STRIDE="20">
+ <RmStreamChannel NAME="Position_0" API="" DATA_SIZE="12" DATA_TYPE="2" REGISTER="0" USAGE="0" USAGE_INDEX="0" ATTRIBUTE_NAME="a_position"/>
+ <RmStreamChannel NAME="TexCoord_0" API="" DATA_SIZE="8" DATA_TYPE="1" REGISTER="0" USAGE="5" USAGE_INDEX="0" ATTRIBUTE_NAME="a_st"/>
+ </RmStream>
+ </RmStreamMap>
+ <RmModelData NAME="Model" API="" FILE_NAME=".\ScreenAlignedQuad.3ds" ORIENTATION="0"/>
+ <RmGLESPass NAME="Pass 0" API="OpenGL ES" PASS_INDEX="0" ENABLED="TRUE">
+ <RmCameraReference NAME="Camera" API="" USE_ACTIVE_CAMERA="FALSE"/>
+ <RmModelReference NAME="Model" API=""/>
+ <RmRenderStateBlock NAME="Render State" API="OpenGL ES">
+ <RmState NAME="GL_CullMode" API="OpenGL ES" STATE="8" VALUE="1" USAGE="RENDER_STATE"/>
+ </RmRenderStateBlock>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+
+uniform mat4 u_mvpMatrix;
+
+attribute vec4 a_position;
+attribute vec2 a_st;
+
+varying vec2 v_st;
+
+void
+main()
+{
+ v_st = a_st;
+ gl_Position = u_mvpMatrix * a_position;
+}
+]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+#extension GL_OES_standard_derivatives:enable
+
+precision highp float;
+
+uniform int u_frequency;
+uniform vec4 u_color0;
+uniform vec4 u_color1;
+
+varying vec2 v_st;
+
+void
+main()
+{
+ float s, t, delta;
+
+ s = mod(floor(v_st.x * float(u_frequency * 2)), 2.0);
+ t = mod(floor(v_st.y * float(u_frequency * 2)), 2.0);
+ delta = abs(s - t);
+
+ gl_FragColor = mix(u_color1, u_color0, delta);
+}
+]]></RmShaderCode></RmGLESShader>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmShaderConstant NAME="u_color0" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_color1" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_frequency" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_mvpMatrix" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ </RmOpenGLESEffect>
+ </RmEffectWorkspace>
+</RENDER_MONKEY>
diff --git a/third_party/gles2_book/Chapter_13/ProceduralTextures/CheckerAA.rfx b/third_party/gles2_book/Chapter_13/ProceduralTextures/CheckerAA.rfx
new file mode 100644
index 0000000..6f73d7e
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ProceduralTextures/CheckerAA.rfx
@@ -0,0 +1,1109 @@
+<?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.Position" 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>7</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>7</LastHolder></Pane-1><Pane-2><Type>2</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><Horiz>0</Horiz><Pane-1>3</Pane-1><Pane-2>8</Pane-2><Panes>2</Panes></Pane-2><Pane-3><Type>2</Type><DockingCX>0</DockingCX><DockingCY>808</DockingCY><Horiz>1</Horiz><Pane-1>4</Pane-1><Pane-2>6</Pane-2><Pane-3>7</Pane-3><Panes>3</Panes></Pane-3><Pane-4><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>5</Selected><Panes>1</Panes><Pane-1>5</Pane-1></Pane-4><Pane-5><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Workspace</Title><ID>1000</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>4</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>4</LastHolder></Pane-5><Pane-6><Type>4</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY></Pane-6><Pane-7><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-7><Pane-8><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>9</Selected><Panes>1</Panes><Pane-1>9</Pane-1></Pane-8><Pane-9><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Output</Title><ID>1002</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>8</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>8</LastHolder></Pane-9><Summary><TopContainer>2</TopContainer><Client>6</Client><Panes>9</Panes></Summary></Application_Layout></DockingPaneLayouts>
+]]></RmTextDataBlock>
+ <RmRegistryBranch NAME="RmRenderStateBlockEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="54" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="70" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1283" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="434" 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="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmStreamEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position.Stream Mapping" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="459" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="323" 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="270" 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="RmPreviewGLWindow" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EffectPlacementRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position" 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="350" 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="RmColorEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position.u_color1" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1100" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmBooleanVariable NAME="FloatingPoint" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="FALSE"/>
+ <RmIntegerVariable NAME="ColorType" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmBooleanVariable NAME="LargeSize" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="TRUE"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmDynamicVariableEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position.u_frequency" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1101" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmBooleanVariable NAME="ShowSetup" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="TRUE"/>
+ </RmRegistryBranch>
+ </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.Position" 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="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1084" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="724" 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="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ </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/1/2008 19:13:57]]></RmTextDataBlock></RmStringVariable>
+ <RmStringVariable NAME="VERSION" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC=""><RmTextDataBlock TYPE="TEXT"><![CDATA[
+RenderMonkey Version 1.71 (build 59)]]></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[
+C:\book\ogles\Code\Chapter_13\ProceduralTextures\]]></RmTextDataBlock></RmStringVariable>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmOpenGLESEffect NAME="Position" API="OpenGL ES" ACTIVE_CAMERA="Camera">
+ <RmCamera NAME="Camera" API="" CAMERA_POSITION_X="0.934720" CAMERA_POSITION_Y="1.103003" CAMERA_POSITION_Z="-3.229657" LOOK_AT_VECTOR_X="0.001000" LOOK_AT_VECTOR_Y="0.001000" LOOK_AT_VECTOR_Z="0.001000" UP_VECTOR_X="-0.962550" UP_VECTOR_Y="0.146132" UP_VECTOR_Z="-0.228347" FOV="45.000000" NEAR_CLIP_PLANE="1.207107" FAR_CLIP_PLANE="23.414213"/>
+ <RmDynamicVariable NAME="u_frequency" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VARIABLE_TYPE="INTEGER" ROWS="1" COLUMNS="1" FIXED_SIZE="TRUE" MIN="-100" MAX="100" CLAMP="FALSE" NORMALIZE="FALSE">
+ <RmDynamicVariableValueContainer>
+ <RmDynamicVariableValue ROW_INDEX="0" COLUMN_INDEX="0" VALUE="6"/>
+ </RmDynamicVariableValueContainer>
+ </RmDynamicVariable>
+ <RmMatrixVariable NAME="u_mvpMatrix" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewProjection" VALUE_0="-0.138832" VALUE_1="-2.092510" VALUE_2="-0.753897" VALUE_3="0.002985" VALUE_4="-2.323802" VALUE_5="0.352794" VALUE_6="-0.551279" VALUE_7="0.002531" VALUE_8="-0.278191" VALUE_9="-0.328329" VALUE_10="0.962537" VALUE_11="2.458123" VALUE_12="-0.263849" VALUE_13="-0.311402" VALUE_14="0.912914" VALUE_15="3.538502"/>
+ <RmMatrixVariable NAME="u_mvMatrix" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="View" VALUE_0="-0.062298" VALUE_1="-0.938975" VALUE_2="-0.338297" VALUE_3="0.001340" VALUE_4="-0.962550" VALUE_5="0.146132" VALUE_6="-0.228347" VALUE_7="0.001048" VALUE_8="0.263849" VALUE_9="0.311402" VALUE_10="-0.912914" VALUE_11="-3.538502" VALUE_12="0.000000" VALUE_13="0.000000" VALUE_14="0.000000" VALUE_15="1.000000"/>
+ <RmColorVariable NAME="u_color0" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE_0="1.000000" VALUE_1="1.000000" VALUE_2="1.000000" VALUE_3="1.000000"/>
+ <RmColorVariable NAME="u_color1" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE_0="0.000000" VALUE_1="0.000000" VALUE_2="0.000000" VALUE_3="1.000000"/>
+ <RmStreamMap NAME="Stream Mapping" API="">
+ <RmStream NAME="Stream" API="" STRIDE="20">
+ <RmStreamChannel NAME="Position_0" API="" DATA_SIZE="12" DATA_TYPE="2" REGISTER="0" USAGE="0" USAGE_INDEX="0" ATTRIBUTE_NAME="a_position"/>
+ <RmStreamChannel NAME="TexCoord_0" API="" DATA_SIZE="8" DATA_TYPE="1" REGISTER="0" USAGE="5" USAGE_INDEX="0" ATTRIBUTE_NAME="a_st"/>
+ </RmStream>
+ </RmStreamMap>
+ <RmModelData NAME="Model" API="" FILE_NAME=".\ScreenAlignedQuad.3ds" ORIENTATION="0"/>
+ <RmGLESPass NAME="Pass 0" API="OpenGL ES" PASS_INDEX="0" ENABLED="TRUE">
+ <RmCameraReference NAME="Camera" API="" USE_ACTIVE_CAMERA="FALSE"/>
+ <RmModelReference NAME="Model" API=""/>
+ <RmRenderStateBlock NAME="Render State" API="OpenGL ES">
+ <RmState NAME="GL_CullMode" API="OpenGL ES" STATE="8" VALUE="1" USAGE="RENDER_STATE"/>
+ </RmRenderStateBlock>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+
+uniform mat4 u_mvpMatrix;
+
+attribute vec4 a_position;
+attribute vec2 a_st;
+
+varying vec2 v_st;
+
+void
+main()
+{
+ v_st = a_st;
+ gl_Position = u_mvpMatrix * a_position;
+}
+]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+#extension GL_OES_standard_derivatives:enable
+
+precision highp float;
+
+uniform int u_frequency;
+uniform vec4 u_color0;
+uniform vec4 u_color1;
+
+varying vec2 v_st;
+
+void
+main()
+{
+ vec4 color;
+ vec2 st_width;
+ vec2 fuzz;
+ vec2 pmod;
+ float fuzz_max;
+
+ // determine the filter width
+ st_width = fwidth(v_st);
+
+ // calculate the fuzziness taking normal into account
+ fuzz = st_width * float(u_frequency) * 2.0;
+
+ fuzz_max = max(fuzz.s, fuzz.t);
+
+ // calculate position in the checkerboard pattern
+ pmod = fract(v_st * float(u_frequency));
+
+ // if the filter width is small enough, compute the pattern color
+ if (fuzz_max <= 0.5)
+ {
+ vec2 p = smoothstep(vec2(0.5), fuzz + vec2(0.5), pmod) + (1.0 - smoothstep(vec2(0.0), fuzz, pmod));
+
+ color = mix(u_color0, u_color1, p.x * p.y + (1.0 - p.x) * (1.0 - p.y));
+
+ // gradually fade in the average color when we get close to the limit
+ color = mix(color, (u_color0 + u_color1)/2.0, smoothstep(0.125, 0.5, fuzz_max));
+ }
+ else
+ {
+ // otherwise, use only the average color
+ color = (u_color0 + u_color1)/2.0;
+ }
+
+ gl_FragColor = color;
+}
+]]></RmShaderCode></RmGLESShader>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmShaderConstant NAME="u_color0" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_color1" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_frequency" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_mvpMatrix" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ </RmOpenGLESEffect>
+ </RmEffectWorkspace>
+</RENDER_MONKEY>
diff --git a/third_party/gles2_book/Chapter_13/ProceduralTextures/ProceduralTextures.rfx b/third_party/gles2_book/Chapter_13/ProceduralTextures/ProceduralTextures.rfx
new file mode 100644
index 0000000..f60300f
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ProceduralTextures/ProceduralTextures.rfx
@@ -0,0 +1,1109 @@
+<?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.Position" 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>7</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>7</LastHolder></Pane-1><Pane-2><Type>2</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><Horiz>0</Horiz><Pane-1>3</Pane-1><Pane-2>8</Pane-2><Panes>2</Panes></Pane-2><Pane-3><Type>2</Type><DockingCX>0</DockingCX><DockingCY>808</DockingCY><Horiz>1</Horiz><Pane-1>4</Pane-1><Pane-2>6</Pane-2><Pane-3>7</Pane-3><Panes>3</Panes></Pane-3><Pane-4><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>5</Selected><Panes>1</Panes><Pane-1>5</Pane-1></Pane-4><Pane-5><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Workspace</Title><ID>1000</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>4</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>4</LastHolder></Pane-5><Pane-6><Type>4</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY></Pane-6><Pane-7><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-7><Pane-8><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>9</Selected><Panes>1</Panes><Pane-1>9</Pane-1></Pane-8><Pane-9><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Output</Title><ID>1002</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>8</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>8</LastHolder></Pane-9><Summary><TopContainer>2</TopContainer><Client>6</Client><Panes>9</Panes></Summary></Application_Layout></DockingPaneLayouts>
+]]></RmTextDataBlock>
+ <RmRegistryBranch NAME="RmRenderStateBlockEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="54" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="70" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1283" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="434" 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="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmStreamEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position.Stream Mapping" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="459" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="323" 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="270" 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="RmPreviewGLWindow" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EffectPlacementRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position" 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="350" 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="RmColorEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position.u_color1" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1100" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmBooleanVariable NAME="FloatingPoint" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="FALSE"/>
+ <RmIntegerVariable NAME="ColorType" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmBooleanVariable NAME="LargeSize" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="TRUE"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmDynamicVariableEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Position.u_frequency" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="DockPaneID" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1101" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmBooleanVariable NAME="ShowSetup" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="TRUE"/>
+ </RmRegistryBranch>
+ </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.Position" 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="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="967" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="718" 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="0" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ </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[
+20/1/2008 22:52:27]]></RmTextDataBlock></RmStringVariable>
+ <RmStringVariable NAME="VERSION" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC=""><RmTextDataBlock TYPE="TEXT"><![CDATA[
+RenderMonkey Version 1.71 (build 59)]]></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[
+C:\book\ogles\Code\Chapter_13\ProceduralTextures\]]></RmTextDataBlock></RmStringVariable>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmOpenGLESEffect NAME="Position" API="OpenGL ES" ACTIVE_CAMERA="Camera">
+ <RmCamera NAME="Camera" API="" CAMERA_POSITION_X="1.482474" CAMERA_POSITION_Y="-1.227030" CAMERA_POSITION_Z="-2.968942" LOOK_AT_VECTOR_X="0.001000" LOOK_AT_VECTOR_Y="0.001000" LOOK_AT_VECTOR_Z="0.001000" UP_VECTOR_X="-0.087063" UP_VECTOR_Y="0.904525" UP_VECTOR_Z="-0.417437" FOV="45.000000" NEAR_CLIP_PLANE="1.207107" FAR_CLIP_PLANE="23.414213"/>
+ <RmDynamicVariable NAME="u_frequency" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VARIABLE_TYPE="INTEGER" ROWS="1" COLUMNS="1" FIXED_SIZE="TRUE" MIN="-100" MAX="100" CLAMP="FALSE" NORMALIZE="FALSE">
+ <RmDynamicVariableValueContainer>
+ <RmDynamicVariableValue ROW_INDEX="0" COLUMN_INDEX="0" VALUE="6"/>
+ </RmDynamicVariableValueContainer>
+ </RmDynamicVariable>
+ <RmMatrixVariable NAME="u_mvpMatrix" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewProjection" VALUE_0="-2.014508" VALUE_1="-0.552268" VALUE_2="-0.776526" VALUE_3="0.003343" VALUE_4="-0.210189" VALUE_5="2.183717" VALUE_6="-1.007783" VALUE_7="-0.000962" VALUE_8="-0.441388" VALUE_9="0.365878" VALUE_10="0.884861" VALUE_11="2.457668" VALUE_12="-0.418633" VALUE_13="0.347015" VALUE_14="0.839242" VALUE_15="3.538071"/>
+ <RmColorVariable NAME="u_color1" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE_0="0.000000" VALUE_1="0.000000" VALUE_2="0.000000" VALUE_3="1.000000"/>
+ <RmColorVariable NAME="u_color0" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" VALUE_0="1.000000" VALUE_1="1.000000" VALUE_2="1.000000" VALUE_3="1.000000"/>
+ <RmStreamMap NAME="Stream Mapping" API="">
+ <RmStream NAME="Stream" API="" STRIDE="20">
+ <RmStreamChannel NAME="Position_0" API="" DATA_SIZE="12" DATA_TYPE="2" REGISTER="0" USAGE="0" USAGE_INDEX="0" ATTRIBUTE_NAME="a_position"/>
+ <RmStreamChannel NAME="TexCoord_0" API="" DATA_SIZE="8" DATA_TYPE="1" REGISTER="0" USAGE="5" USAGE_INDEX="0" ATTRIBUTE_NAME="a_st"/>
+ </RmStream>
+ </RmStreamMap>
+ <RmModelData NAME="Model" API="" FILE_NAME=".\ScreenAlignedQuad.3ds" ORIENTATION="0"/>
+ <RmGLESPass NAME="Pass 0" API="OpenGL ES" PASS_INDEX="0" ENABLED="TRUE">
+ <RmCameraReference NAME="Camera" API="" USE_ACTIVE_CAMERA="FALSE"/>
+ <RmModelReference NAME="Model" API=""/>
+ <RmRenderStateBlock NAME="Render State" API="OpenGL ES">
+ <RmState NAME="GL_CullMode" API="OpenGL ES" STATE="8" VALUE="1" USAGE="RENDER_STATE"/>
+ </RmRenderStateBlock>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+
+uniform mat4 u_mvpMatrix;
+
+attribute vec4 a_position;
+attribute vec2 a_st;
+
+varying vec2 v_st;
+
+void
+main()
+{
+ v_st = a_st;
+ gl_Position = u_mvpMatrix * a_position;
+}
+]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+#extension GL_OES_standard_derivatives:enable
+
+precision highp float;
+
+uniform int u_frequency;
+uniform vec4 u_color0;
+uniform vec4 u_color1;
+
+varying vec2 v_st;
+
+void
+main()
+{
+#if 1
+ float s, t, delta;
+
+ s = mod(floor(v_st.x * float(u_frequency * 2)), 2.0);
+ t = mod(floor(v_st.y * float(u_frequency * 2)), 2.0);
+ delta = abs(s - t);
+
+ gl_FragColor = mix(u_color1, u_color0, delta);
+#else
+ vec4 color;
+ vec2 st_width;
+ vec2 fuzz;
+ vec2 pmod;
+ float fuzz_max;
+
+ st_width = fwidth(v_st);
+ fuzz = st_width * float(u_frequency) * 2.0;
+ fuzz_max = max(fuzz.s, fuzz.t);
+ pmod = fract(v_st * float(u_frequency));
+
+ if (fuzz_max <= 0.5)
+ {
+ vec2 p = smoothstep(vec2(0.5), fuzz + vec2(0.5), pmod) + (1.0 - smoothstep(vec2(0.0), fuzz, pmod));
+
+ color = mix(u_color0, u_color1, p.x * p.y + (1.0 - p.x) * (1.0 - p.y));
+
+ color = mix(color, (u_color0 + u_color1)/2.0, smoothstep(0.125, 0.5, fuzz_max));
+ }
+ else
+ {
+ color = (u_color0 + u_color1)/2.0;
+ }
+
+ gl_FragColor = color;
+#endif
+}
+]]></RmShaderCode></RmGLESShader>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmShaderConstant NAME="u_color0" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_color1" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_frequency" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_mvpMatrix" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ </RmOpenGLESEffect>
+ </RmEffectWorkspace>
+</RENDER_MONKEY>
diff --git a/third_party/gles2_book/Chapter_13/ProceduralTextures/ScreenAlignedQuad.3ds b/third_party/gles2_book/Chapter_13/ProceduralTextures/ScreenAlignedQuad.3ds
new file mode 100644
index 0000000..619124b
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ProceduralTextures/ScreenAlignedQuad.3ds
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/ProceduralTextures/checker.fs b/third_party/gles2_book/Chapter_13/ProceduralTextures/checker.fs
new file mode 100644
index 0000000..305eb46
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ProceduralTextures/checker.fs
@@ -0,0 +1,21 @@
+#ifdef GL_ES
+precision highp float;
+#endif
+
+uniform int frequency;
+uniform vec4 color0;
+uniform vec4 color1;
+
+varying vec2 v_st;
+
+void
+main()
+{
+ float s, t, delta;
+
+ s = mod(floor(v_st.x * float(frequency * 2)), 2.0);
+ t = mod(floor(v_st.y * float(frequency * 2)), 2.0);
+ delta = abs(s - t);
+
+ gl_FragColor = mix(color1, color0, delta);
+}
diff --git a/third_party/gles2_book/Chapter_13/ProceduralTextures/checker.tiff b/third_party/gles2_book/Chapter_13/ProceduralTextures/checker.tiff
new file mode 100644
index 0000000..767b030
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ProceduralTextures/checker.tiff
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/ProceduralTextures/checker.vs b/third_party/gles2_book/Chapter_13/ProceduralTextures/checker.vs
new file mode 100644
index 0000000..88375ba
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ProceduralTextures/checker.vs
@@ -0,0 +1,14 @@
+
+uniform mat4 mvp_matrix;
+
+attribute vec4 a_position;
+attribute vec2 a_st;
+
+varying vec2 v_st;
+
+void
+main()
+{
+ v_st = a_st;
+ gl_Position = mvp_matrix * a_position;
+}
diff --git a/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Corona.tga b/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Corona.tga
new file mode 100644
index 0000000..19dba88
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Corona.tga
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/ProjectiveSpotlight.rfx b/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/ProjectiveSpotlight.rfx
new file mode 100644
index 0000000..12f85f6
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/ProjectiveSpotlight.rfx
@@ -0,0 +1,1133 @@
+<?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.ProjectiveSpotlight" 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>14</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>14</LastHolder></Pane-1><Pane-2><Type>0</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Title>u_blurStep</Title><ID>1100</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>8</DockingHolder><FloatingHolder>19</FloatingHolder><LastHolder>19</LastHolder></Pane-2><Pane-3><Type>2</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><Horiz>1</Horiz><Pane-1>4</Pane-1><Pane-2>5</Pane-2><Pane-3>6</Pane-3><Pane-4>7</Pane-4><Pane-5>8</Pane-5><Pane-6>9</Pane-6><Panes>6</Panes></Pane-3><Pane-4><Type>1</Type><DockingCX>434</DockingCX><DockingCY>212</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-4><Pane-5><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-5><Pane-6><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-6><Pane-7><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-7><Pane-8><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-8><Pane-9><Type>2</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><Horiz>0</Horiz><Pane-1>10</Pane-1><Pane-2>15</Pane-2><Panes>2</Panes></Pane-9><Pane-10><Type>2</Type><DockingCX>0</DockingCX><DockingCY>641</DockingCY><Horiz>1</Horiz><Pane-1>11</Pane-1><Pane-2>13</Pane-2><Pane-3>14</Pane-3><Panes>3</Panes></Pane-10><Pane-11><Type>1</Type><DockingCX>336</DockingCX><DockingCY>250</DockingCY><Selected>12</Selected><Panes>1</Panes><Pane-1>12</Pane-1></Pane-11><Pane-12><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Workspace</Title><ID>1000</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>11</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>11</LastHolder></Pane-12><Pane-13><Type>4</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY></Pane-13><Pane-14><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-14><Pane-15><Type>1</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Selected>16</Selected><Panes>1</Panes><Pane-1>16</Pane-1></Pane-15><Pane-16><Type>0</Type><DockingCX>250</DockingCX><DockingCY>250</DockingCY><Title>Output</Title><ID>1002</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>15</DockingHolder><FloatingHolder>0</FloatingHolder><LastHolder>15</LastHolder></Pane-16><Pane-17><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>18</TopContaner><WindowRectTopPos>32</WindowRectTopPos><WindowRectBottomPos>160</WindowRectBottomPos><WindowRectLeftPos>0</WindowRectLeftPos><WindowRectRightPos>566</WindowRectRightPos></Pane-17><Pane-18><Type>2</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Horiz>1</Horiz><Pane-1>19</Pane-1><Panes>1</Panes></Pane-18><Pane-19><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-19><Pane-20><Type>0</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Title>u_blurStep</Title><ID>1101</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>7</DockingHolder><FloatingHolder>23</FloatingHolder><LastHolder>23</LastHolder></Pane-20><Pane-21><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>22</TopContaner><WindowRectTopPos>32</WindowRectTopPos><WindowRectBottomPos>160</WindowRectBottomPos><WindowRectLeftPos>0</WindowRectLeftPos><WindowRectRightPos>566</WindowRectRightPos></Pane-21><Pane-22><Type>2</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Horiz>1</Horiz><Pane-1>23</Pane-1><Panes>1</Panes></Pane-22><Pane-23><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-23><Pane-24><Type>0</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Title>u_blurStep</Title><ID>1102</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>6</DockingHolder><FloatingHolder>27</FloatingHolder><LastHolder>27</LastHolder></Pane-24><Pane-25><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>26</TopContaner><WindowRectTopPos>32</WindowRectTopPos><WindowRectBottomPos>160</WindowRectBottomPos><WindowRectLeftPos>0</WindowRectLeftPos><WindowRectRightPos>566</WindowRectRightPos></Pane-25><Pane-26><Type>2</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Horiz>1</Horiz><Pane-1>27</Pane-1><Panes>1</Panes></Pane-26><Pane-27><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-27><Pane-28><Type>0</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Title>u_blurStep</Title><ID>1103</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>5</DockingHolder><FloatingHolder>31</FloatingHolder><LastHolder>31</LastHolder></Pane-28><Pane-29><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>30</TopContaner><WindowRectTopPos>32</WindowRectTopPos><WindowRectBottomPos>160</WindowRectBottomPos><WindowRectLeftPos>0</WindowRectLeftPos><WindowRectRightPos>566</WindowRectRightPos></Pane-29><Pane-30><Type>2</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Horiz>1</Horiz><Pane-1>31</Pane-1><Panes>1</Panes></Pane-30><Pane-31><Type>1</Type><DockingCX>566</DockingCX><DockingCY>128</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-31><Pane-32><Type>3</Type><DockingCX>0</DockingCX><DockingCY>0</DockingCY><TopContaner>33</TopContaner><WindowRectTopPos>557</WindowRectTopPos><WindowRectBottomPos>769</WindowRectBottomPos><WindowRectLeftPos>386</WindowRectLeftPos><WindowRectRightPos>820</WindowRectRightPos></Pane-32><Pane-33><Type>2</Type><DockingCX>434</DockingCX><DockingCY>212</DockingCY><Horiz>1</Horiz><Pane-1>34</Pane-1><Panes>1</Panes></Pane-33><Pane-34><Type>1</Type><DockingCX>434</DockingCX><DockingCY>212</DockingCY><Selected>0</Selected><Panes>0</Panes></Pane-34><Pane-35><Type>0</Type><DockingCX>434</DockingCX><DockingCY>212</DockingCY><Title>u_lightPos</Title><ID>1104</ID><IconID>-1</IconID><Options>0</Options><DockingHolder>4</DockingHolder><FloatingHolder>34</FloatingHolder><LastHolder>34</LastHolder></Pane-35><Summary><TopContainer>3</TopContainer><Client>13</Client><Panes>35</Panes></Summary></Application_Layout></DockingPaneLayouts>
+]]></RmTextDataBlock>
+ <RmRegistryBranch NAME="RmPreviewDx9Window" API="" XML_VERSION="RenderMonkey 1.71"/>
+ <RmRegistryBranch NAME="RmPreviewGLESWindow" API="" XML_VERSION="RenderMonkey 1.71"/>
+ <RmRegistryBranch NAME="RmPreviewGLWindow" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EffectPlacementRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.ProjectiveSpotlight" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="39" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="2" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="483" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="483" 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"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <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 NAME="NodeRepository" 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 NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmRenderStateBlockEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="EditNodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ <RmRegistryBranch NAME="NodeRepository" 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 NAME="Effect Workspace.ProjectiveSpotlight.Render Object.spotLight" API="" XML_VERSION="RenderMonkey 1.71"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.ProjectiveSpotlight" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="431" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="36" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1063" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Height" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="514" 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"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmTextureGenerator" 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.ProjectiveSpotlight" 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[
+Render Object]]></RmTextDataBlock></RmStringVariable>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="1" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Width" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="650" 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="429" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmStreamEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="Effect Workspace.Textured.Stream Mapping" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="258" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="128" 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="270" 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 NAME="Effect Workspace.ProjectiveSpotlight.Stream Mapping" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmIntegerVariable NAME="X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="344" MIN="-10" MAX="10" CLAMP="FALSE"/>
+ <RmIntegerVariable NAME="Y" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" VALUE="128" 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="270" 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="RmScalarEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" API="" XML_VERSION="RenderMonkey 1.71"/>
+ </RmRegistryBranch>
+ <RmRegistryBranch NAME="RmDynamicVariableEditor" API="" XML_VERSION="RenderMonkey 1.71">
+ <RmRegistryBranch NAME="NodeRepository" 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[
+19/1/2008 9:30:45]]></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:\svn\redbook\Code\Chapter_13\ProjectiveSpotlight\]]></RmTextDataBlock></RmStringVariable>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ </RmRegistryBranch>
+ <RmOpenGLESEffect NAME="ProjectiveSpotlight" API="OpenGL ES" ACTIVE_CAMERA="Camera">
+ <RmCamera NAME="Camera" API="" CAMERA_POSITION_X="-95.867363" CAMERA_POSITION_Y="52.315987" CAMERA_POSITION_Z="-127.439903" LOOK_AT_VECTOR_X="0.000000" LOOK_AT_VECTOR_Y="0.000000" LOOK_AT_VECTOR_Z="0.000000" UP_VECTOR_X="0.128836" UP_VECTOR_Y="0.947666" UP_VECTOR_Z="0.292114" FOV="45.000000" NEAR_CLIP_PLANE="1.000000" FAR_CLIP_PLANE="1000.000000"/>
+ <RmMatrixVariable NAME="u_matViewProjection" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="ViewProjection" VALUE_0="-1.824085" VALUE_1="-0.155327" VALUE_2="1.308414" VALUE_3="0.000011" VALUE_4="0.311038" VALUE_5="2.287868" VALUE_6="0.705226" VALUE_7="0.000228" VALUE_8="0.571773" VALUE_9="-0.312024" VALUE_10="0.760079" VALUE_11="167.001587" VALUE_12="0.571202" VALUE_13="-0.311712" VALUE_14="0.759319" VALUE_15="167.834579"/>
+ <RmMatrixVariable NAME="u_matProjection" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="Projection" VALUE_0="2.250190" VALUE_1="0.000000" VALUE_2="0.000000" VALUE_3="0.000000" VALUE_4="0.000000" VALUE_5="2.414213" VALUE_6="0.000000" VALUE_7="0.000000" VALUE_8="0.000000" VALUE_9="0.000000" VALUE_10="-1.001001" VALUE_11="-1.001001" VALUE_12="0.000000" VALUE_13="0.000000" VALUE_14="-1.000000" VALUE_15="0.000000"/>
+ <RmFloatVariable NAME="u_time_0_X" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="Time0_X" VALUE="41.675537" MIN="-1.000000" MAX="1.000000" CLAMP="FALSE"/>
+ <Rm2DTextureVariable NAME="Spotlight" API="" ARTIST_EDITABLE="FALSE" VARIABLE_SEMANTIC="" FILE_NAME="Corona.tga" ORIGIN="0"/>
+ <Rm2DTextureVariable NAME="base" API="" ARTIST_EDITABLE="TRUE" VARIABLE_SEMANTIC="" FILE_NAME="Terrain.tga" ORIGIN="0"/>
+ <RmStreamMap NAME="Stream Mapping" API="">
+ <RmStream NAME="Stream" API="" STRIDE="32">
+ <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"/>
+ </RmStream>
+ </RmStreamMap>
+ <RmModelData NAME="Terrrain" API="" FILE_NAME=".\Terrain.3ds" ORIENTATION="0"/>
+ <RmGLESPass NAME="Render Object" API="OpenGL ES" PASS_INDEX="0" ENABLED="TRUE">
+ <RmCameraReference NAME="Camera" API="" USE_ACTIVE_CAMERA="FALSE"/>
+ <RmModelReference NAME="Terrrain" API=""/>
+ <RmGLESShader NAME="Fragment Program" API="OpenGL ES" PIXEL_SHADER="TRUE"><RmShaderCode TYPE="TEXT"><![CDATA[
+precision mediump float;
+
+uniform sampler2D baseMap;
+uniform sampler2D spotLight;
+varying vec2 v_texCoord;
+varying vec3 v_projTexCoord;
+varying vec3 v_normal;
+varying vec3 v_lightDir;
+
+
+void main( void )
+{
+ // Projective fetch of spotlight
+ vec4 spotLightColor = texture2DProj( spotLight, v_projTexCoord );
+
+ // Basemap
+ vec4 baseColor = texture2D( baseMap, v_texCoord );
+
+ // Compute N.L
+ float nDotL = max( 0.0, -dot( v_normal, v_lightDir ) );
+
+ gl_FragColor = spotLightColor * baseColor * 2.0 * nDotL;
+
+}]]></RmShaderCode></RmGLESShader>
+ <RmGLESShader NAME="Vertex Program" API="OpenGL ES" PIXEL_SHADER="FALSE"><RmShaderCode TYPE="TEXT"><![CDATA[
+uniform float u_time_0_X;
+uniform mat4 u_matProjection;
+uniform mat4 u_matViewProjection;
+attribute vec4 a_vertex;
+attribute vec2 a_texCoord0;
+attribute vec3 a_normal;
+
+varying vec2 v_texCoord;
+varying vec3 v_projTexCoord;
+varying vec3 v_normal;
+varying vec3 v_lightDir;
+
+void main( void )
+{
+ gl_Position = u_matViewProjection * a_vertex;
+ v_texCoord = a_texCoord0.xy;
+
+ // Compute a light position based on time
+ vec3 lightPos;
+ lightPos.x = cos(u_time_0_X);
+ lightPos.z = sin(u_time_0_X);
+ lightPos.xz = 100.0 * normalize(lightPos.xz);
+ lightPos.y = 100.0;
+
+ // Compute the light coordinate axes
+ vec3 look = -normalize( lightPos );
+ vec3 right = cross( vec3( 0.0, 0.0, 1.0), look );
+ vec3 up = cross( look, right );
+
+ // Create a view matrix for the light
+ mat4 lightView = mat4( right, dot( right, -lightPos ),
+ up, dot( up, -lightPos ),
+ look, dot( look, -lightPos),
+ 0.0, 0.0, 0.0, 1.0 );
+
+ // Transform position into light view space
+ vec4 objPosLight = a_vertex * lightView;
+
+ // Transform position into projective light view space
+ objPosLight = u_matProjection * objPosLight;
+
+ // Create bias matrix
+ mat3 biasMatrix = mat3( 0.5, 0.0, 0.5,
+ 0.0, -0.5, 0.5,
+ 0.0, 0.0, 1.0 );
+
+ // Compute projective texture coordinates
+ v_projTexCoord = objPosLight.xyz * biasMatrix;
+
+ v_lightDir = normalize(a_vertex.xyz - lightPos);
+ v_normal = a_normal;
+
+}]]></RmShaderCode></RmGLESShader>
+ <RmStreamMapReference NAME="Stream Mapping" API=""/>
+ <RmTextureObject NAME="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="spotLight" API="OpenGL ES" STATE_INDEX="1" VERTEX_TEXTURE="FALSE">
+ <RmTextureReference NAME="Spotlight" API=""/>
+ <RmState NAME="GL_TextureWrapS" API="OpenGL ES" STATE="1" VALUE="2" USAGE="SAMPLER_STATE"/>
+ <RmState NAME="GL_TextureWrapT" API="OpenGL ES" STATE="2" VALUE="2" USAGE="SAMPLER_STATE"/>
+ <RmState NAME="GL_TextureWrapR" API="OpenGL ES" STATE="3" VALUE="2" USAGE="SAMPLER_STATE"/>
+ <RmState NAME="GL_TextureMinify" API="OpenGL ES" STATE="4" VALUE="1" USAGE="SAMPLER_STATE"/>
+ <RmState NAME="GL_TextureMagnify" API="OpenGL ES" STATE="5" VALUE="1" USAGE="SAMPLER_STATE"/>
+ </RmTextureObject>
+ <RmSampler NAME="baseMap" API="" REGISTER="-1"/>
+ <RmSampler NAME="spotLight" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_time_0_X" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_matProjection" API="" REGISTER="-1"/>
+ <RmShaderConstant NAME="u_matViewProjection" API="" REGISTER="-1"/>
+ </RmGLESPass>
+ </RmOpenGLESEffect>
+ </RmEffectWorkspace>
+</RENDER_MONKEY>
diff --git a/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Terrain.3ds b/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Terrain.3ds
new file mode 100644
index 0000000..a46d787
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Terrain.3ds
Binary files differ
diff --git a/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Terrain.tga b/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Terrain.tga
new file mode 100644
index 0000000..47d5117
--- /dev/null
+++ b/third_party/gles2_book/Chapter_13/ProjectiveSpotlight/Terrain.tga
Binary files differ