Browse Source

Updated RenderToTexture

Josh Engebretson 10 years ago
parent
commit
709935587a
31 changed files with 350 additions and 43 deletions
  1. 1 0
      RenderToTexture/.gitignore
  2. 5 0
      RenderToTexture/Resources.asset
  3. 5 0
      RenderToTexture/Resources/Components.asset
  4. 7 0
      RenderToTexture/Resources/Components/RenderBox.js.asset
  5. 44 0
      RenderToTexture/Resources/Components/RenderToTexture.js
  6. 7 0
      RenderToTexture/Resources/Components/RenderToTexture.js.asset
  7. 15 0
      RenderToTexture/Resources/Components/Spinner.js
  8. 7 0
      RenderToTexture/Resources/Components/Spinner.js.asset
  9. 0 5
      RenderToTexture/Resources/Materials/Chest.xml
  10. 5 0
      RenderToTexture/Resources/Models.asset
  11. BIN
      RenderToTexture/Resources/Models/Box.mdl
  12. BIN
      RenderToTexture/Resources/Models/Chest.fbx
  13. 9 0
      RenderToTexture/Resources/Models/Chest.fbx.asset
  14. BIN
      RenderToTexture/Resources/Models/Chest.mdl
  15. BIN
      RenderToTexture/Resources/Models/Ground.fbx
  16. 9 0
      RenderToTexture/Resources/Models/Ground.fbx.asset
  17. 5 0
      RenderToTexture/Resources/Models/Materials.asset
  18. 15 0
      RenderToTexture/Resources/Models/Materials/DefaultMaterial.material
  19. 5 0
      RenderToTexture/Resources/Models/Materials/DefaultMaterial.material.asset
  20. 14 0
      RenderToTexture/Resources/Models/Materials/GroundMaterial.material
  21. 5 0
      RenderToTexture/Resources/Models/Materials/GroundMaterial.material.asset
  22. 5 0
      RenderToTexture/Resources/Scenes.asset
  23. 77 0
      RenderToTexture/Resources/Scenes/MainScene.scene
  24. 5 0
      RenderToTexture/Resources/Scenes/MainScene.scene.asset
  25. 74 0
      RenderToTexture/Resources/Scenes/RenderToTextureScene.scene
  26. 5 0
      RenderToTexture/Resources/Scenes/RenderToTextureScene.scene.asset
  27. 5 0
      RenderToTexture/Resources/Scripts.asset
  28. 4 38
      RenderToTexture/Resources/Scripts/main.js
  29. 7 0
      RenderToTexture/Resources/Scripts/main.js.asset
  30. 5 0
      RenderToTexture/Resources/Textures.asset
  31. 5 0
      RenderToTexture/Resources/Textures/chest.png.asset

+ 1 - 0
RenderToTexture/.gitignore

@@ -0,0 +1 @@
+Cache/*

+ 5 - 0
RenderToTexture/Resources.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "e608606cd003702eac8bf830118155c7",
+	"FolderImporter": {}
+}

+ 5 - 0
RenderToTexture/Resources/Components.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "86bb5a202e3acfed1c761f5cb516b7c6",
+	"FolderImporter": {}
+}

+ 7 - 0
RenderToTexture/Resources/Components/RenderBox.js.asset

@@ -0,0 +1,7 @@
+{
+	"version": 1,
+	"guid": "d35726803eba8b2f1f4043b824bca479",
+	"JavascriptImporter": {
+		"IsComponentFile": false
+	}
+}

+ 44 - 0
RenderToTexture/Resources/Components/RenderToTexture.js

@@ -0,0 +1,44 @@
+"atomic component";
+
+var component = function(self) {
+
+    var node = self.node;
+    var model = node.getComponent("StaticModel");
+
+    var scene = Atomic.player.loadScene("Scenes/RenderToTextureScene.scene");
+
+    // Create a renderable texture (1024x1024, RGB format), enable bilinear filtering on it
+
+    var renderTexture = new Atomic.Texture2D();
+    renderTexture.setSize(1024, 1024, Atomic.graphics.getRGBFormat(), Atomic.TEXTURE_RENDERTARGET);
+    renderTexture.filterMode = Atomic.FILTER_BILINEAR;
+
+    // Create a new material from scratch, use the diffuse unlit technique, assign the render texture
+    // as its diffuse texture, then assign the material box object
+    var renderMaterial = new Atomic.Material();
+    renderMaterial.setTechnique(0, Atomic.cache.getResource("Technique", "Techniques/Diff.xml"));
+    renderMaterial.setTexture(Atomic.TU_DIFFUSE, renderTexture);
+    model.setMaterial(renderMaterial);
+
+    // Get the texture's RenderSurface object (exists when the texture has been created in rendertarget mode)
+    // and define the viewport for rendering the second scene, similarly as how backbuffer viewports are defined
+    // to the Renderer subsystem. By default the texture viewport will be updated when the texture is visible
+    // in the main view
+
+    var cameras = scene.getComponents("Camera", true);
+
+    var surface = renderTexture.getRenderSurface();
+    var rttViewport = new Atomic.Viewport(scene, cameras[0]);
+    surface.setViewport(0, rttViewport);
+
+    self.start = function() {
+
+    }
+
+    self.update = function(timeStep) {
+
+    }
+
+}
+
+exports.component = component;

+ 7 - 0
RenderToTexture/Resources/Components/RenderToTexture.js.asset

@@ -0,0 +1,7 @@
+{
+	"version": 1,
+	"guid": "f377c95183ac73d7cb403a7e127f1d57",
+	"JavascriptImporter": {
+		"IsComponentFile": true
+	}
+}

+ 15 - 0
RenderToTexture/Resources/Components/Spinner.js

@@ -0,0 +1,15 @@
+"atomic component";
+
+var inspectorFields = {
+    speed: 1.0
+}
+
+exports.component = function(self) {
+
+    self.update = function(timeStep) {
+
+        self.node.yaw(timeStep * 75 * self.speed);
+        self.node.pitch(-timeStep * 25 * self.speed);
+    }
+
+}

+ 7 - 0
RenderToTexture/Resources/Components/Spinner.js.asset

@@ -0,0 +1,7 @@
+{
+	"version": 1,
+	"guid": "2572388f43360fa73e7b5e893f31f4ee",
+	"JavascriptImporter": {
+		"IsComponentFile": true
+	}
+}

+ 0 - 5
RenderToTexture/Resources/Materials/Chest.xml

@@ -1,5 +0,0 @@
-<material>
-    <technique name="Techniques/Diff.xml" quality="0" />
-    <texture unit="diffuse" name="Textures/chest.png" />
-    <parameter name="MatSpecColor" value="0.3 0.3 0.3 16" />
-</material>

+ 5 - 0
RenderToTexture/Resources/Models.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "3da90e84ba3469dd7baf40308d6f0671",
+	"FolderImporter": {}
+}

BIN
RenderToTexture/Resources/Models/Box.mdl


BIN
RenderToTexture/Resources/Models/Chest.fbx


+ 9 - 0
RenderToTexture/Resources/Models/Chest.fbx.asset

@@ -0,0 +1,9 @@
+{
+	"version": 1,
+	"guid": "e7d4ad4f5ed6ddd03d1708a6918350d9",
+	"ModelImporter": {
+		"scale": 0.01,
+		"importAnimations": false,
+		"animInfo": []
+	}
+}

BIN
RenderToTexture/Resources/Models/Chest.mdl


BIN
RenderToTexture/Resources/Models/Ground.fbx


+ 9 - 0
RenderToTexture/Resources/Models/Ground.fbx.asset

@@ -0,0 +1,9 @@
+{
+	"version": 1,
+	"guid": "4ed1e5b9d3ed112ea6b73ad73104c7e5",
+	"ModelImporter": {
+		"scale": 1,
+		"importAnimations": false,
+		"animInfo": []
+	}
+}

+ 5 - 0
RenderToTexture/Resources/Models/Materials.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "e94b4c44f9ceaf17fa25c7b04c2bcf0f",
+	"FolderImporter": {}
+}

+ 15 - 0
RenderToTexture/Resources/Models/Materials/DefaultMaterial.material

@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<material>
+	<technique name="Techniques/Diff.xml" quality="0" loddistance="0" />
+	<texture unit="diffuse" name="Textures/chest.png" />
+	<parameter name="UOffset" value="1 0 0 0" />
+	<parameter name="VOffset" value="0 1 0 0" />
+	<parameter name="MatDiffColor" value="0.8 0.8 0.8 1" />
+	<parameter name="MatEmissiveColor" value="0 0 0 1" />
+	<parameter name="MatEnvMapColor" value="1 1 1" />
+	<parameter name="MatSpecColor" value="0.1 0.1 0.1 16" />
+	<cull value="ccw" />
+	<shadowcull value="ccw" />
+	<fill value="solid" />
+	<depthbias constant="0" slopescaled="0" />
+</material>

+ 5 - 0
RenderToTexture/Resources/Models/Materials/DefaultMaterial.material.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "dfe15918e308ec40ec4b885153bbda0a",
+	"MaterialImporter": {}
+}

+ 14 - 0
RenderToTexture/Resources/Models/Materials/GroundMaterial.material

@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<material>
+	<technique name="Techniques/Diff.xml" quality="0" loddistance="0" />
+	<parameter name="UOffset" value="1 0 0 0" />
+	<parameter name="VOffset" value="0 1 0 0" />
+	<parameter name="MatDiffColor" value="0.8 0.8 0.8 1" />
+	<parameter name="MatEmissiveColor" value="0 0 0 1" />
+	<parameter name="MatEnvMapColor" value="1 1 1" />
+	<parameter name="MatSpecColor" value="0.6 0.6 0.6 16" />
+	<cull value="ccw" />
+	<shadowcull value="ccw" />
+	<fill value="solid" />
+	<depthbias constant="0" slopescaled="0" />
+</material>

+ 5 - 0
RenderToTexture/Resources/Models/Materials/GroundMaterial.material.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "02bb4221b0b8955864fc3374a6854852",
+	"MaterialImporter": {}
+}

+ 5 - 0
RenderToTexture/Resources/Scenes.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "fe7df32998221cf40851e71a0dd61f98",
+	"FolderImporter": {}
+}

+ 77 - 0
RenderToTexture/Resources/Scenes/MainScene.scene

@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<scene id="1">
+	<attribute name="Name" value="" />
+	<attribute name="Time Scale" value="1" />
+	<attribute name="Smoothing Constant" value="50" />
+	<attribute name="Snap Threshold" value="5" />
+	<attribute name="Elapsed Time" value="0" />
+	<attribute name="Next Replicated Node ID" value="367" />
+	<attribute name="Next Replicated Component ID" value="1981" />
+	<attribute name="Next Local Node ID" value="16778496" />
+	<attribute name="Next Local Component ID" value="16777216" />
+	<attribute name="Variables" />
+	<attribute name="Variable Names" value="" />
+	<component type="PhysicsWorld" id="1" />
+	<component type="Octree" id="2" />
+	<component type="DebugRenderer" id="3" />
+	<node id="2">
+		<attribute name="Is Enabled" value="true" />
+		<attribute name="Name" value="Zone" />
+		<attribute name="Position" value="0 0 0" />
+		<attribute name="Rotation" value="1 0 0 0" />
+		<attribute name="Scale" value="1 1 1" />
+		<attribute name="Variables" />
+		<component type="Zone" id="4">
+			<attribute name="Bounding Box Min" value="-10000 -10000 -10000" />
+			<attribute name="Bounding Box Max" value="10000 10000 10000" />
+			<attribute name="Ambient Color" value="0.4 0.4 0.4 1" />
+		</component>
+	</node>
+	<node id="3">
+		<attribute name="Is Enabled" value="true" />
+		<attribute name="Name" value="GlobalLight" />
+		<attribute name="Position" value="0 0 0" />
+		<attribute name="Rotation" value="0.888074 0.325058 -0.325058 0" />
+		<attribute name="Scale" value="1 1 1" />
+		<attribute name="Variables" />
+		<component type="Light" id="5">
+			<attribute name="Light Type" value="Directional" />
+			<attribute name="Cast Shadows" value="true" />
+			<attribute name="CSM Splits" value="10 20 50 0" />
+			<attribute name="View Size Quantize" value="1" />
+			<attribute name="View Size Minimum" value="5" />
+			<attribute name="Depth Constant Bias" value="0.00025" />
+			<attribute name="Depth Slope Bias" value="0.001" />
+		</component>
+	</node>
+	<node id="361">
+		<attribute name="Is Enabled" value="true" />
+		<attribute name="Name" value="Camera" />
+		<attribute name="Position" value="0 0 -4" />
+		<attribute name="Rotation" value="1 0 0 0" />
+		<attribute name="Scale" value="1 1 1" />
+		<attribute name="Variables" />
+		<component type="Camera" id="1973" />
+	</node>
+	<node id="364">
+		<attribute name="Is Enabled" value="true" />
+		<attribute name="Name" value="RenderBox" />
+		<attribute name="Position" value="0 0 0" />
+		<attribute name="Rotation" value="1 0 0 0" />
+		<attribute name="Scale" value="1 1 1" />
+		<attribute name="Variables" />
+		<component type="StaticModel" id="1976">
+			<attribute name="Model" value="Model;Cache/4ed1e5b9d3ed112ea6b73ad73104c7e5.mdl" />
+			<attribute name="Material" value="Material;Models/Materials/GroundMaterial.material" />
+		</component>
+		<component type="JSComponent" id="1977">
+			<attribute name="ComponentFile" value="JSComponentFile;Components/RenderToTexture.js" />
+		</component>
+		<component type="JSComponent" id="1980">
+			<attribute name="FieldValues">
+				<variant hash="273365031" type="Float" value="0.1" />
+			</attribute>
+			<attribute name="ComponentFile" value="JSComponentFile;Components/Spinner.js" />
+		</component>
+	</node>
+</scene>

+ 5 - 0
RenderToTexture/Resources/Scenes/MainScene.scene.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "5887b13818f7289e357087cd4c5ee467",
+	"SceneImporter": {}
+}

+ 74 - 0
RenderToTexture/Resources/Scenes/RenderToTextureScene.scene

@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<scene id="1">
+	<attribute name="Name" value="" />
+	<attribute name="Time Scale" value="1" />
+	<attribute name="Smoothing Constant" value="50" />
+	<attribute name="Snap Threshold" value="5" />
+	<attribute name="Elapsed Time" value="0" />
+	<attribute name="Next Replicated Node ID" value="366" />
+	<attribute name="Next Replicated Component ID" value="1979" />
+	<attribute name="Next Local Node ID" value="16778496" />
+	<attribute name="Next Local Component ID" value="16777216" />
+	<attribute name="Variables" />
+	<attribute name="Variable Names" value="" />
+	<component type="PhysicsWorld" id="1" />
+	<component type="Octree" id="2" />
+	<component type="DebugRenderer" id="3" />
+	<node id="2">
+		<attribute name="Is Enabled" value="true" />
+		<attribute name="Name" value="Zone" />
+		<attribute name="Position" value="0 0 0" />
+		<attribute name="Rotation" value="1 0 0 0" />
+		<attribute name="Scale" value="1 1 1" />
+		<attribute name="Variables" />
+		<component type="Zone" id="4">
+			<attribute name="Bounding Box Min" value="-10000 -10000 -10000" />
+			<attribute name="Bounding Box Max" value="10000 10000 10000" />
+			<attribute name="Ambient Color" value="0.4 0.4 0.4 1" />
+			<attribute name="Fog Color" value="0.1 0.1 0.1 1" />
+			<attribute name="Fog Start" value="10" />
+			<attribute name="Fog End" value="100" />
+		</component>
+	</node>
+	<node id="3">
+		<attribute name="Is Enabled" value="true" />
+		<attribute name="Name" value="GlobalLight" />
+		<attribute name="Position" value="0 0 0" />
+		<attribute name="Rotation" value="0.888074 0.325058 -0.325058 0" />
+		<attribute name="Scale" value="1 1 1" />
+		<attribute name="Variables" />
+		<component type="Light" id="5">
+			<attribute name="Light Type" value="Directional" />
+			<attribute name="Cast Shadows" value="true" />
+			<attribute name="CSM Splits" value="10 20 50 0" />
+			<attribute name="View Size Quantize" value="1" />
+			<attribute name="View Size Minimum" value="5" />
+			<attribute name="Depth Constant Bias" value="0.00025" />
+			<attribute name="Depth Slope Bias" value="0.001" />
+		</component>
+	</node>
+	<node id="361">
+		<attribute name="Is Enabled" value="true" />
+		<attribute name="Name" value="Camera" />
+		<attribute name="Position" value="0 0 -2.5" />
+		<attribute name="Rotation" value="1 0 0 0" />
+		<attribute name="Scale" value="1 1 1" />
+		<attribute name="Variables" />
+		<component type="Camera" id="1973" />
+	</node>
+	<node id="363">
+		<attribute name="Is Enabled" value="true" />
+		<attribute name="Name" value="Chest" />
+		<attribute name="Position" value="0 -0.34 0" />
+		<attribute name="Rotation" value="1 0 0 0" />
+		<attribute name="Scale" value="1 1 1" />
+		<attribute name="Variables" />
+		<component type="StaticModel" id="1975">
+			<attribute name="Model" value="Model;Cache/e7d4ad4f5ed6ddd03d1708a6918350d9.mdl" />
+			<attribute name="Material" value="Material;Models/Materials/DefaultMaterial.material" />
+		</component>
+		<component type="JSComponent" id="1978">
+			<attribute name="ComponentFile" value="JSComponentFile;Components/Spinner.js" />
+		</component>
+	</node>
+</scene>

+ 5 - 0
RenderToTexture/Resources/Scenes/RenderToTextureScene.scene.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "6245accdd3c9b330f58fdf0bab6ffbf3",
+	"SceneImporter": {}
+}

+ 5 - 0
RenderToTexture/Resources/Scripts.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "719f2ed991eccd1b7cec132a13b4a877",
+	"FolderImporter": {}
+}

+ 4 - 38
RenderToTexture/Resources/Scripts/main.js

@@ -1,45 +1,11 @@
-
 // This script is the main entry point of the game
 
-require("AtomicGame");
-
-Atomic.game.init(start, update);
-
-
-// called at the start of play
-function start() {
-
-	var game = Atomic.game;
-
-	// create a 2D scene
-	game.createScene3D();
-
-	var scene = game.scene;
+var scene = Atomic.player.loadScene("Scenes/MainScene.scene");
 
-	// zone
-	var zoneNode = scene.createChild("Zone")
-	var zone = zoneNode.createComponent("Zone");
-	zone.boundingBox = [-1000, -1000, -1000, 1000, 1000 , 1000];
-	zone.ambientColor = [0.35, 0.35, 0.35];
-	zone.fogColor = [0.1, 0.1, 0.1, 1.0];
-	zone.fogStart = 10;
-	zone.fogEnd = 100;
-
-	game.cameraNode.position = [0, 1.0, -3];
-	game.cameraNode.pitch(20);
-
-	var lightNode = scene.createChild("Directional Light");
-	lightNode.direction = [0.6, -1.0, 0.8];
-	var light = lightNode.createComponent("Light")
-	light.lightType = Atomic.LIGHT_DIRECTIONAL;
-
-	var node = game.scene.createChild("RenderBox");
-	node.createJSComponent("RenderBox");
-
-}
-
-// called per frame
+// called per frame, optional
 function update(timeStep) {
 
 
 }
+
+exports.update = update;

+ 7 - 0
RenderToTexture/Resources/Scripts/main.js.asset

@@ -0,0 +1,7 @@
+{
+	"version": 1,
+	"guid": "ac79c12a7740f5a7ae842fa6789e2db6",
+	"JavascriptImporter": {
+		"IsComponentFile": false
+	}
+}

+ 5 - 0
RenderToTexture/Resources/Textures.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "c66f5050e9fc4f60ce1ce1f4425fd952",
+	"FolderImporter": {}
+}

+ 5 - 0
RenderToTexture/Resources/Textures/chest.png.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "8abe54d275001d91aa53f0c204ecc9c9",
+	"TextureImporter": {}
+}