Commit graph

316 commits

Author SHA1 Message Date
ZappoMan
930353e658 optimized distanceToCamera() added distanceToPoint() and distanceSquaredToPoint() 2013-05-10 18:13:08 -07:00
Andrzej Kapolka
f0573e6ee5 When we add (or recolor) a voxel, make sure it has no children. When we
attempt to remove a voxel that would be a child of a larger solid one, carve
up the parent.
2013-05-10 17:31:55 -07:00
ZappoMan
ef20b3e4b3 optimized performance of VoxelNode::isLeaf() 2013-05-10 14:32:44 -07:00
Andrzej Kapolka
501aac39da Use isColored, not getShouldRender. 2013-05-10 10:46:04 -07:00
Andrzej Kapolka
e6e5b20dee Merge branch 'master' of https://github.com/worklist/hifi 2013-05-10 10:20:04 -07:00
ZappoMan
3af8a1b8f4 code review fixes 2013-05-10 10:03:28 -07:00
Andrzej Kapolka
beadb6a93d Merge branch 'master' of https://github.com/worklist/hifi
Conflicts:
	interface/src/main.cpp
2013-05-10 10:03:05 -07:00
Andrzej Kapolka
f6fcdd78b2 Adding/removing voxels at different sizes. 2013-05-10 09:53:53 -07:00
ZappoMan
9dc09de75e make VoxelSystem::deleteVoxelAt() work properly 2013-05-10 09:32:56 -07:00
ZappoMan
33fc9f5389 fixed partial VBO updates 2013-05-09 17:01:20 -07:00
ZappoMan
c73d4ddfa4 Merge branch 'master' of https://github.com/worklist/hifi into render_voxels_optimization 2013-05-09 14:06:42 -07:00
Andrzej Kapolka
7ff8b84f4c Return the box face, as well as the distance, from the ray intersection test.
Use it to determine which voxel neighbor we create when adding.
2013-05-09 10:46:52 -07:00
ZappoMan
655f14121d Voxel Render Optimization - using blended VBO update strategy
- Fixed a bug in updateNodeInArraysAsFullVBO() that caused blended strategy
  to not work properly.
- Implement strategy to usually update only the portion of the VBOs that
  have changed, unless nodes have been removed, and then update the full
  VBO. This siginificantly improves treeToArrays() performance
- Still to do implement partial strategy for copy buffers and update GPU
2013-05-09 10:25:12 -07:00
ZappoMan
244b4a17f7 lowered voxel count so Ryan can run, and handle too many voxels case slightly more gracefully than crashing 2013-05-08 18:06:13 -07:00
ZappoMan
5f55d511c5 Merge branch 'master' of https://github.com/worklist/hifi into render_voxels_optimization 2013-05-08 15:01:50 -07:00
ZappoMan
66e416d4dd added VoxelNode::inFrustum() which returns OUTSIDE, INTERSECT, INSIDE to allow more optimal frustum analysis 2013-05-08 14:23:36 -07:00
ZappoMan
24501e5c68 added contains() and remove() methods 2013-05-08 14:22:03 -07:00
Andrzej Kapolka
1c8b835bb8 Merge branch 'master' of https://github.com/worklist/hifi 2013-05-08 13:15:21 -07:00
ZappoMan
2f3a7f8ea8 use different voxel persist files for local or server mode 2013-05-08 12:19:27 -07:00
Andrzej Kapolka
4ed7176ff6 Move the sun back up again to match the lighting. 2013-05-08 12:07:21 -07:00
Andrzej Kapolka
c34b6df2f4 Merge branch 'master' of https://github.com/worklist/hifi
Conflicts:
	voxel-server/src/main.cpp
2013-05-08 11:56:03 -07:00
Andrzej Kapolka
310c0288c7 Changed atmosphere radius to 1000 meters. 2013-05-08 10:31:13 -07:00
ZappoMan
e508c9fedc removed a redundant comment 2013-05-08 10:04:06 -07:00
ZappoMan
bc55c09ed7 Added more SceneUtils support cleaned up voxel-edit to use scene utils
- Added addCornersAndAxisLines() scene
- Added addSurfaceScene() scene
- moved improved addSphereScene() from voxel-edit to SceneUtils.cpp
- added command line options to voxel-edit to create different scenes
2013-05-08 02:15:39 -07:00
ZappoMan
cdf72711b5 cleaned up compiler warning 2013-05-08 02:15:10 -07:00
ZappoMan
de969891d8 Merge branch 'master' of https://github.com/worklist/hifi into render_voxels_optimization 2013-05-08 01:19:35 -07:00
ZappoMan
6f05403c0d added SceneUtils.h/.cpp which moves addSphereScene() to a common location 2013-05-08 01:06:10 -07:00
ZappoMan
7d6b28dd4d Tweaks to createSphere() plus some new helper functions
- changed createSphere() to support new NATURAL mode which uses perlin
  noise to create natural color and shape
- added getVoxelCount()
- coding standard cleanup
2013-05-08 01:02:55 -07:00
ZappoMan
146334e4d7 dead code cleanup 2013-05-08 00:49:37 -07:00
ZappoMan
2cee643e7c update TREE_SCALE to 128 so it's power of 2, and MAX_VOXELS_PER_SYSTEM to 500k 2013-05-08 00:47:42 -07:00
Andrzej Kapolka
7c8a06ed4d Added wrapper classes for shaders/shader programs to ease the process of
compiling, linking, assigning uniforms, etc.  They're modeled after the ones
included in QtOpenGL, which we can't use at the moment because they require
a Qt OpenGL context.
2013-05-07 17:40:55 -07:00
Andrzej Kapolka
7c9b0d8f58 Have the voxel server push out an environment packet with its regular updates. 2013-05-07 15:10:02 -07:00
Andrzej Kapolka
c7e31ec414 Merge branch 'master' of https://github.com/worklist/hifi
Conflicts:
	libraries/shared/src/PacketHeaders.h
2013-05-07 14:44:17 -07:00
Andrzej Kapolka
47f3566929 Wavelengths, switch for environment rendering, far plane adjustment. 2013-05-07 14:40:30 -07:00
Andrzej Kapolka
7faa9e4318 More work on atmosphere rendering; rendering now working. 2013-05-07 12:40:15 -07:00
Philip Rosedale
3afb1dc7a8 Merge branch 'master' of https://github.com/worklist/hifi 2013-05-07 08:40:43 -07:00
ZappoMan
d11e490b62 cleaned up code in createSphere() 2013-05-06 21:07:42 -07:00
ZappoMan
94473d6b95 made TREE_SCALE 100 2013-05-06 21:07:10 -07:00
Philip Rosedale
69cac10cee null change 2013-05-06 18:21:33 -07:00
ZappoMan
bccad01e0e fixed CR issue 2013-05-06 16:47:31 -07:00
ZappoMan
342e3e0407 fixed CR issue 2013-05-06 16:43:25 -07:00
ZappoMan
cfbcc4418f some cleanup pre CR 2013-05-06 16:34:34 -07:00
ZappoMan
37b165c8e9 some cleanup pre CR 2013-05-06 16:30:34 -07:00
ZappoMan
f5808f43b5 some cleanup pre CR 2013-05-06 16:24:09 -07:00
ZappoMan
9fb57feb3b some cleanup pre CR 2013-05-06 16:21:58 -07:00
ZappoMan
dc481002ec fixed Xcode compiler warnings 2013-05-06 16:00:43 -07:00
ZappoMan
89226b18a5 switched getAABox() interface 2013-05-06 15:50:42 -07:00
ZappoMan
96561e97d8 added VIEW_CULLING_RATE_IN_MILLISECONDS 2013-05-06 15:49:54 -07:00
ZappoMan
c975699cea added debug to ViewFrustum::matches() 2013-05-06 15:48:05 -07:00
ZappoMan
043a284d4d Merge branch 'master' of https://github.com/worklist/hifi into render_voxels_optimization 2013-05-06 13:36:31 -07:00
Andrzej Kapolka
b4dd6b57aa Starting on environment bits. 2013-05-06 13:30:07 -07:00
ZappoMan
e0d040a73b added removeChildAtIndex() which removes a node, but doesn't delete it 2013-05-06 11:02:28 -07:00
ZappoMan
17b137cc53 changed VoxelNodeBag to just compare pointers, since we don't really care about ordering the bag 2013-05-06 11:01:29 -07:00
ZappoMan
17e26b2d42 add matches() 2013-05-06 10:59:09 -07:00
Andrzej Kapolka
4d33c462fe Merge branch 'master' of https://github.com/worklist/hifi
Conflicts:
	libraries/voxels/src/VoxelTree.h
2013-05-06 09:45:57 -07:00
ZappoMan
2c8c6a2600 Coding standard cleanup and VoxelNode optimization
- make octalCode and children members private
- add public getters for accessing these private members
- change constructor to require an OctalCode for all non-roots
- default constructor constructs a rootNode
- make primary access for deleting, adding, and accessing children through public methods that do bookkeeping
- calculate AABox on voxel creation so that we don't need to do all the math when we deal with voxels
- added methods on VoxelNode for common items like getCorner(), getCenter(), getLevel(), etc
2013-05-05 10:17:02 -07:00
ZappoMan
34982227e4 removed color reaveraging from readNodeData() because server will already send averages 2013-05-04 21:58:16 -07:00
ZappoMan
6a32424fb2 make readFromFileV2() return bool for file exists 2013-05-04 09:41:10 -07:00
ZappoMan
c1847a7511 set dirty bit on tree in a couple new places 2013-05-04 09:19:46 -07:00
ZappoMan
3ed19ccb91 fixed comment 2013-05-04 08:28:00 -07:00
Andrzej Kapolka
aff465b17b Missed a spot with the conversion from pointers to references. 2013-05-04 07:59:45 -07:00
Andrzej Kapolka
34565a4956 Pointers to references for in/out parameters, renamed line parameter to more
descriptive "distance."
2013-05-04 07:56:30 -07:00
ZappoMan
5253485261 added TREE_SCALE to default camera farClip 2013-05-04 07:46:42 -07:00
Andrzej Kapolka
ff4e21e504 Remaining pick bits. 2013-05-03 20:12:46 -07:00
ZappoMan
2c128fd813 added voxel-edit tool, as well as made voxel file read/write work, disabled voxel persist on server shutdown 2013-05-03 19:19:48 -07:00
Andrzej Kapolka
f8cbe34e07 Added basic ray intersection testing to VoxelTree. 2013-05-03 17:27:57 -07:00
ZappoMan
e3164b3976 added read/write voxel files 2013-05-03 17:09:43 -07:00
ZappoMan
f4099349e8 change to encodeTreeBitstreamRecursion() to allow calling without viewFrustum 2013-05-03 15:13:00 -07:00
ZappoMan
1366794bdc added some tree methods for primitive voxel editing 2013-05-03 15:00:03 -07:00
ZappoMan
e9d556419f got rid of some dead code 2013-05-03 14:39:00 -07:00
ZappoMan
a4f2dc283d various changes to help debug render pipeline
- fixing some cases where TREE_SCALE was not using constant in prep for making TREE_SCALE larger
- added createLine() to VoxelTree
- added axis lines made of voxels to scene
- added corner points made of voxels to scene
2013-05-03 09:58:52 -07:00
ZappoMan
34a059db9a more optimizations of render pipeline 2013-05-02 22:26:56 -07:00
ZappoMan
771c604121 more render pipeline optimizations 2013-05-02 18:12:55 -07:00
ZappoMan
fcce4753c9 more optimizations on render pipeline 2013-05-02 16:37:31 -07:00
ZappoMan
5a14c71225 added dirty bit support to VoxelTree, use it to determine when to call treeToArrays 2013-05-02 15:57:31 -07:00
ZappoMan
174c3ee65b search into level appropriately 2013-05-02 11:31:20 -07:00
ZappoMan
6a7ebb3a55 fixed LOD issue in client 2013-05-01 22:57:19 -07:00
ZappoMan
cfcfacfbdb cleanup 2013-05-01 18:25:42 -07:00
ZappoMan
4f86b5570f first cut at improved render pipeline 2013-05-01 18:21:13 -07:00
ZappoMan
f8523e135d cr cleanup 2013-04-30 11:44:59 -07:00
ZappoMan
2a746ec111 cr cleanup 2013-04-30 11:34:14 -07:00
ZappoMan
7fddd63a61 cr cleanup 2013-04-30 11:29:13 -07:00
ZappoMan
91ca787e2f removed MarkerNode 2013-04-30 11:14:36 -07:00
ZappoMan
dae3881821 removed MarkerNode 2013-04-30 11:13:41 -07:00
ZappoMan
447de68fb5 cr cleanup, remove loadBitstreamBuffer() 2013-04-30 11:06:30 -07:00
ZappoMan
7d801e99d1 cr cleanup 2013-04-30 10:55:04 -07:00
ZappoMan
2ec2824e8f cr cleanup 2013-04-30 10:46:48 -07:00
ZappoMan
a6b486aa89 cr cleanup 2013-04-30 10:39:45 -07:00
ZappoMan
59ce921645 cr cleanup 2013-04-30 10:38:30 -07:00
ZappoMan
778d3715ce cr cleanup 2013-04-30 10:37:02 -07:00
ZappoMan
4cea0ffa10 cr cleanup 2013-04-30 10:33:13 -07:00
ZappoMan
5a90dc4487 cr cleanup 2013-04-30 10:32:55 -07:00
ZappoMan
0fd3f00054 cr cleanup 2013-04-30 10:28:34 -07:00
ZappoMan
218dd3d62b cr cleanup 2013-04-30 10:27:38 -07:00
ZappoMan
37b139621a cr cleanup 2013-04-30 10:27:32 -07:00
ZappoMan
3673ee36ad cr cleanup and optimization of isLeaf() 2013-04-30 10:23:35 -07:00
ZappoMan
8a5633a0db got rid of compareOctalCodesDepth() and cleaned up compareOctalCodes() 2013-04-30 10:09:15 -07:00
ZappoMan
ee814d7ddc better version of boundaryDistanceForRenderLevel() 2013-04-29 19:18:38 -07:00
ZappoMan
823e23d50a add VoxelConstants.h 2013-04-29 17:46:02 -07:00
ZappoMan
accda966d5 Add LOD culling to the server protocol.
- Add LOD/distance culling to VoxelTree:encodeTreeBitstreamRecursion()
  and VoxelTree::searchForColoredNodesRecursion()
- added new levels to boundaryDistanceForRenderLevel()
- added more spheres to the scene to get a better sense of LOD behavior
2013-04-29 17:38:52 -07:00
ZappoMan
a638542aa0 added support for LOD scanned sendding order of voxel scene 2013-04-29 14:34:17 -07:00
ZappoMan
781721b79c clean up constants for voxels 2013-04-29 06:49:57 -07:00
ZappoMan
7c180c800f printf/pringLog cleanup 2013-04-29 06:28:19 -07:00
ZappoMan
2f9c3da914 removed some dead code 2013-04-27 15:22:50 -07:00
ZappoMan
628b74b8e1 removed some dead code 2013-04-27 15:21:40 -07:00
ZappoMan
7fda49a5e1 removed some dead code 2013-04-27 15:17:59 -07:00
ZappoMan
7155557127 removed some dead code 2013-04-27 15:13:24 -07:00
ZappoMan
c364ec0dc7 removed mutex locking from VoxelTree for now 2013-04-27 15:09:32 -07:00
ZappoMan
9d6c53a535 remove mutex locking from VoxelTree for now, isn't needed 2013-04-27 15:08:17 -07:00
ZappoMan
e55993abf1 removed accidental whitespace 2013-04-27 15:04:08 -07:00
ZappoMan
82c5c3706a Latest work on new voxel sending strategy
- removed mutex locking for now. do we need this?
- fixed bug in createMissingNode() where we would accidentally stomp on
  a previously created peer tree while creating a new node
- improved printTreeForDebugging() to include more details
- fixed a bug in readBitstreamToTree() for multi-tree case where we
  weren't correctly walking through the buffer
2013-04-27 12:08:50 -07:00
ZappoMan
5758e42870 Added deleteAll() member to VoxelNodeBag class 2013-04-27 12:04:33 -07:00
ZappoMan
e93cab40ed change default grow size 2013-04-26 12:12:41 -07:00
ZappoMan
e1defb8681 added searchForColoredNodes() 2013-04-26 09:23:10 -07:00
ZappoMan
0dfa5d573a removed debug code 2013-04-26 09:22:26 -07:00
ZappoMan
99c0cbc7cd removed some debug code 2013-04-26 00:47:14 -07:00
ZappoMan
2ba24e1716 fixed a couple bugs in VoxelNodeBag 2013-04-26 00:46:29 -07:00
ZappoMan
d6e27d8f2f thread safety in VoxelTree (aded mutex to prevent reads and adds/deletes at same time)
also added VoxelNodeBag class to handle running out of room in the encode tree functions
2013-04-25 23:45:34 -07:00
ZappoMan
c014abbe6c new VoxelNodeBag class which is used to store a collection of voxel node pointers 2013-04-25 23:41:07 -07:00
ZappoMan
3c7c85a98c Added second cut at new bitstream writers
- added encodeTreeBitstream() which is new version of bitstream encoder that handles
  only encoding nodes that are in view. Also handles detecting packet overflow with
  new technique
- added encodeTreeBitstreamRecursion() which is the private work horse function
- moved temporary code to searchAndEncodeMultiTreeBitstream() which is still not
  ready for prime time
2013-04-25 17:31:32 -07:00
ZappoMan
667fe11694 added VoxelNode::printDebugDetails() 2013-04-25 17:29:56 -07:00
ZappoMan
785ef88820 Code cleanup, change readBitstreamToTree() to support multiple trees, first cut at new loadBitstream()
- some small tweaks to cod to match coding standard for pointers
- changed readBitstreamToTree() to handle multiple trees in a single packet
- first cut at new version of loadBitstream() which is currently not in use
2013-04-24 23:47:38 -07:00
ZappoMan
0c692ca0c0 added isLeaf(), isInView(), and distanceToCamera() helper methods 2013-04-24 22:54:55 -07:00
ZappoMan
f449eafa63 added typedef for location enum 2013-04-24 22:53:34 -07:00
ZappoMan
b291b5d1f6 fixed bug in initialization of false color (actually true color) 2013-04-22 18:07:58 -07:00
ZappoMan
9d17dc0387 make view frustum culling default behavior, removed soem debug printf()s for now 2013-04-22 17:43:28 -07:00
ZappoMan
4e0a3e3b58 switch to boxInFrustum() instead of pointInFrustum() for more accuracy 2013-04-22 17:21:47 -07:00
ZappoMan
a79659a5d4 change VoxelAgentData to not include position, use AvatarData _bodyPosition instead 2013-04-22 15:22:41 -07:00
ZappoMan
7c73964836 code review cleanup 2013-04-22 15:07:46 -07:00
ZappoMan
030f5328f5 First cut at View Frustum Culling between client and server 2013-04-22 14:46:25 -07:00
ZappoMan
e1da39e2bb Made several ViewFrustum methods const since they don't modify the class 2013-04-22 14:13:56 -07:00
ZappoMan
400ecf6b86 Convert over to standard glm functions for length, normalize, cross, and dot product 2013-04-21 22:57:01 -07:00
ZappoMan
358efb472d Clean up AABox to coding standard, made several methods const
- Cleaned up AABox to be consistent with the coding standard
- converted some methods to const and fixed up callers
2013-04-21 22:46:13 -07:00
ZappoMan
e93ece0f52 Added support for NO_FALSE_COLOR define.
- changed VoxelNode to have implementation option for NO_FALSE_COLOR
Need some help from Stephen and/or Leo on how to make cmake support
building the voxels library in NO_FALSE_COLOR mode for the server
but keep false color support in the client
2013-04-21 19:45:54 -07:00
ZappoMan
a02a75f516 fix bug in definition of frustum planes, and general code cleanup
- Fixed bug in definition of frustum planes, namely making sure the points are
  given in the correct order so that our plane normals point in correct direction
- general code cleanup to match coding standard
2013-04-21 15:21:03 -07:00
ZappoMan
8a150d27b8 Cleanup for coding standard fix bug in creation of plane from points
- cleaned up code to match HiFi Coding standard
- fixed bug in creation of plane related to cross product
2013-04-21 15:18:17 -07:00
ZappoMan
67910a2c29 Merge branch 'master' of https://github.com/worklist/hifi into view_frustum_work 2013-04-19 20:08:47 -07:00
ZappoMan
7dbc6bc986 Added inline getters for camera attributes 2013-04-19 19:56:53 -07:00
ZappoMan
8ad51b6c08 got rid of a bunch of this-> at Stephen's request. Added debuging for box in view 2013-04-19 19:56:03 -07:00
ZappoMan
2752918573 Fixed LOD bug, added recurseTree helper, change tree to use safe/true/false colors
- Fixed LOD bug in server side sending
- added recurseTreeWithOperation() helper
- changed tree to use new VoxelNode color related API
2013-04-19 18:15:50 -07:00
ZappoMan
3ec920d1b8 added scale() method to AABox 2013-04-19 18:14:10 -07:00
ZappoMan
9c601cedd0 Adding support for false color to voxel nodes, also added AABox to get voxel bounding box 2013-04-19 18:05:38 -07:00
Stephen Birarda
b9a1faf284 add a new SimpleMovingAverage class, replaces CounterStats 2013-04-18 14:46:39 -07:00
tosh
1e6352593a Merge branch 'master' of git://github.com/worklist/hifi into 19262
Conflicts:
	interface/src/Head.cpp
	interface/src/Util.cpp
	interface/src/main.cpp
	libraries/avatars/src/Orientation.cpp
2013-04-18 12:38:35 +02:00
tosh
bf5f54c9d0 integrates logging for 'avatars' library, fixes missig return in Log.cpp, adds _lib suffix for log callback namespaces and reverts voxels -> voxLib rename in main 2013-04-17 20:14:29 +02:00
tosh
f899ff9378 adds logging support to voxels library 2013-04-17 20:01:58 +02:00
ZappoMan
4a28e5889b Merge branch 'master' of https://github.com/worklist/hifi into view_frustum_work 2013-04-16 12:39:58 -07:00
Stephen Birarda
c921fd9b87 remove unnecessary SharedUtil include 2013-04-16 12:26:44 -07:00
Stephen Birarda
0182c29e7b switch Util for SharedUtil in ViewFrustum 2013-04-16 12:25:23 -07:00
Stephen Birarda
e7e7bd290a remove debugging on voxel deletion 2013-04-16 12:04:56 -07:00
ZappoMan
dcca1699d3 Adding first cut at ViewFrustum pointIn,SphereIn,BoxIn code.
- Added Plane class
- Added AABox class
- Removed some experimental "slightly inside" code from view frustum
2013-04-16 11:29:31 -07:00
ZappoMan
3b994cbdcf Latest work on ViewFrustum
- added support for specifying lens attributes (fov, near, far, ratio)
- changed constructor and calculate methods to be separate
- coding standard cleanup
2013-04-15 17:54:44 -07:00
ZappoMan
27165be902 tweak starting fov adjust to 1.65 which seems correct 2013-04-13 13:19:48 -07:00
ZappoMan
4cb986b3f9 tweaks to ViewFrustum's default FOV, added comments 2013-04-13 13:09:20 -07:00
ZappoMan
505b2db935 some spacing cleanup 2013-04-12 17:27:54 -07:00
ZappoMan
54ba0d0224 cleaned up spacing for code review 2013-04-12 17:23:23 -07:00
ZappoMan
ca4286590e fixed column width to match codeing standard 2013-04-12 17:14:08 -07:00
ZappoMan
5a8c5ff011 coding standards clean up 2013-04-12 16:55:57 -07:00
ZappoMan
5504d87212 Merge and Cleanup
-Cleanup glmUtils(as in, get rid of it)
-Merge branch 'master' of https://github.com/worklist/hifi into view_frustum_work
2013-04-12 16:32:46 -07:00
ZappoMan
2ea8ce8ef8 Merge branch 'master' of https://github.com/worklist/hifi into view_frustum_work 2013-04-12 15:37:54 -07:00
Stephen Birarda
f6adac1399 change a couple more long ints 2013-04-12 15:35:06 -07:00
ZappoMan
77996fb140 Merge branch 'master' of https://github.com/worklist/hifi into view_frustum_work 2013-04-12 15:06:41 -07:00
ZappoMan
d568cce0cd changed interface to use ViewFrustum class for rendering view frustum
- updated ViewFrustum class to work correctly
- added new keyboard interface to adjust offset camera position and up
- removed keyboard interface for local add sphere, since we don't need that anymore
2013-04-12 15:01:48 -07:00
Stephen Birarda
c3b457febb moved MarkerNode from shared to voxel library 2013-04-12 14:51:12 -07:00
ZappoMan
862ee47fbb moving voxellib to libraries/voxels 2013-04-12 13:40:33 -07:00
Stephen Birarda
67efc12e59 move shared to libraries, DRY library macro, rename libs 2013-04-12 12:38:34 -07:00