Search Unity

The Community Ocean Shader (Open Source) Unity 5

Discussion in 'Shaders' started by laurent-clave, Nov 30, 2015.

  1. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    I haven't tested it on 5.4.1 yet.
    I am sure it has to do with the Inspector GUI code.
    I will dowload it and get back to you.
     
  2. Eknoes

    Eknoes

    Joined:
    Sep 15, 2015
    Posts:
    56
    Cool. It worked fine for some time and suddenly it broke. Then tested it in a new project and after a few minutes it broke again

    Edit: I found a way to reproduce this. When i move the ocean folder to a subfolder it breaks. But when i move it back to the root directory it works again
     
  3. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    I saw now your edit.

    In the OceanGeneratorInspector.cs file there is this line:

    presetPath = Application.dataPath+"/Ocean/Editor/_OceanPresets";

    This is to load/save the ocean presets.

    Change it to:

    presetPath = Application.dataPath+"/YourNeFolder/Ocean/Editor/_OceanPresets";
     
  4. Eknoes

    Eknoes

    Joined:
    Sep 15, 2015
    Posts:
    56
    Thanks that solved it :)
     
  5. mh114

    mh114

    Joined:
    Nov 17, 2013
    Posts:
    295
    Hey, I've converted the BuoyancyInspector-script to use SerializedProperties, so it will save changes correctly and also work with the undo as expected. The modified script is attached.
     

    Attached Files:

  6. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi. Thanks!

    I will include this in a small next update along with serializedProperties for the OceanInspector.
     
    VKirillov likes this.
  7. houzy

    houzy

    Joined:
    Oct 24, 2015
    Posts:
    8
    Where is the source code of libocean.so?
     
  8. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi.

    There is currently no source code for the native libs.
    These are created by me and actually do low level stuff.
     
  9. houzy

    houzy

    Joined:
    Oct 24, 2015
    Posts:
    8
    OK. Thank you very much.
     
  10. Emre_U

    Emre_U

    Joined:
    Jan 27, 2015
    Posts:
    49
    Hi elias,

    My sailing game based on this beautiful community ocean is going well but I have a problem

    Why my terrain doesn't create waves at shore line with the ocean? I am trying to build the game to Mobile. Can it be a limitation that I am not aware of?

    Sample gif below:
    https://gfycat.com/WeeklyNeedyGreatwhiteshark
     
  11. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi.

    I am on the process of updating the lib. That will include a camera rendering the depth for the shaders and not using the _CameraDepthTexture since it is inconsistent between Unity versions.

    What Unity version are you using?
     
  12. Emre_U

    Emre_U

    Joined:
    Jan 27, 2015
    Posts:
    49
    Unity 5.4.2f2 , also I have tried with using my own mesh instead of terrain and it is not working (as waves) either.

    And while you are redoing the lib, the scale of the boat is another weird thing with the shader. I guess it is about physic calculations though. Anyhow I just enlarged everything and buoyancy is working as intended with random bugs that I will iron out myself.

    In conclusion, still this is 5 star perfect. Lots of people commented on great sea at my prototype :) Kudos to you.
     
  13. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    The buoyancy to work correct you need a higher resolution mesh grid.
    I could add some interpolation for smaller grids though, so that users can keep their ships or boats at physical dimensions.

    In general I have more time now to work on the lib.
     
    Lohrion and Emre_U like this.
  14. dinhanhtuan

    dinhanhtuan

    Joined:
    Nov 23, 2016
    Posts:
    5
    Hi, alias_t
    before, i thank yo very much for community help.
    I have a question with you:
    i 'm creating the ocean by unity but i use own wave not FFT because i want interact with the ship. I only use your shader for my ocean mesh but in my ocean the foam at the wave not indecator?
     
  15. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi. There are issues with the camera depth buffer after unity 5.4.x.
    So I am rewriting parts of the lib and the shader now.
     
  16. dinhanhtuan

    dinhanhtuan

    Joined:
    Nov 23, 2016
    Posts:
    5
    Thank you very much! Elias_t
    After i use your shader, the ocean is attach file.
    Could you review the image and give me a idea?
     

    Attached Files:

  17. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Ok. I understand what you mean now.

    The foam on the waves depends on the internal wave generator. Search in the Ocean.cs on how it is added on tangents.w.
    So you should provide a way to do the same in your wave generator.
     
  18. dinhanhtuan

    dinhanhtuan

    Joined:
    Nov 23, 2016
    Posts:
    5
    Thank you for your reply! Elias_t
    Add tangents.w for sine wave is difficult. So i think, i want to use all of your ocean and shader. But i consufuse that if the your boyancy to add to ship, is it realistic dynamic of the ship? because my plant is small marine simulator. My ship is handling by joystics for pollusion and rudder, and other ship is moved by constant speed and course.
    So, can i contact with you by email?
     
  19. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi. The buoyancy script should be fine. I have to change it though for smaller objects.

    You can contact me through email. Check your private messages.
     
  20. mickylin

    mickylin

    Joined:
    May 16, 2015
    Posts:
    3
    Hi elias_t:
    Thanks so much for your Ocean shader. I have some question about the shader is that if there is possible made of underwater FX in this shader? Especially for Mobile platform too.I had been try many underwater FX package but can't actually run in good FPS so if there is a way to increase the underwater shader I will appreciate for your help.Thanks again! :)
     
  21. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi. I am rewriting now the system.
    An underwater effect should come after this.
     
    RendCycle, Emre_U and hopeful like this.
  22. mickylin

    mickylin

    Joined:
    May 16, 2015
    Posts:
    3
    Thank you for your reply ! Elias_t!:)
     
  23. svankirk

    svankirk

    Joined:
    Nov 27, 2016
    Posts:
    1
    Are there instructions somewhere on how to incorporate this into our own projects?
     
  24. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi. Select the main assets of this project and its dependencies and create a unity package. Then add this to your project.

    The demo scenes should help allow you to understand how things work.
     
  25. sniperisa

    sniperisa

    Joined:
    Sep 20, 2015
    Posts:
    18
    I posted this already in what seams to be a long dead thread to this topic:

    I managed to get the Ocean running in multiplayer.
    To achieve that i made the following changes to Ocean.cs:
    • I added a System.Random object, which is initialized with the same seed on every client
    • Time.time is replaced by the variable snycTime, which is synced with the server
    In addition to that i initialize the ocean on every client simultanious (but I'm not sure that is still necessary).

    In Boyancy.cs i put all the Code from Start() into a separate function, which is called after the ocean is initialized. Otherwise the script wouldn't work, because when the ship is created the ocean is not yet there.

    Here are some videos of my game which use the Ocean.
    It is still work in progress and the videos show not the network stuff, only player vs npcs




    The videos are made with Unity 5.4. With 5.5 i have the bug, that the shore-foam and the one on the ships hull is gone.
    But in the demo scenes it still works :(
     
    jason-fisher and Lohrion like this.
  26. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi. Thanks for the feedback!

    There is a known issue on unity5.5 on how the _CameraDepthTexture is used in shaders.
    Right now I am rendering the depth into a rendertexture to avoid such issues in the future.
     
  27. sniperisa

    sniperisa

    Joined:
    Sep 20, 2015
    Posts:
    18
    I made a short video to show my networking changes of the ocean in action :)

     
    BrendanKZN and elias_t like this.
  28. sniperisa

    sniperisa

    Joined:
    Sep 20, 2015
    Posts:
    18
    I got rid of the studdering of the waves over the network by using a different syncing method:
    Not the snyct Time.time value is used in the client. Instead i calculate die timedifference between the Server and the client once and then use the clients "Time.time + timedifference".
    Everytime the syncing is done i calculate a newTimedifference and compare it with the old. If they differ over 0.1 seconds, the timedifference is updated to the newTimedifference.

    This way the waves are smooth and there should only be small corrections necessary which will be hardly noticeably.
    The 0.1s threshold is tweakable if that is not the case.
     
    elias_t likes this.
  29. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Thanks for the extra info!!
     
  30. babe_pwm

    babe_pwm

    Joined:
    Dec 10, 2016
    Posts:
    1
    Thanks for your great work elias_t !

    But this plugin get error when archive project in XCode due to lack bitcode support

    Here 's XCode error :
    bitcode bundle could not be generated because '/Users/EmobiDev/Projects/FPSFreeze/XcodeProject/Libraries/Ocean/Plugins/iOS/libocean.a(ofVec2f.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture armv7

    Can you rebuild these static lib to add bitcode support?
     
  31. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi. I will upload the bitcode enabled lib in an hour or two.
     
  32. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Ok. I have updated the repo with the bitcode enabled plugin. It is the libocean.a-iOS-bitcode.zip archive.
    By default the libocean.a lib is not bitcode enabled. You have to unzip the previous zip and replace the libocean.a file.

    In case you don't want to update from the repo, here are the files as attachments.
     

    Attached Files:

  33. bigkahuna

    bigkahuna

    Joined:
    Apr 30, 2006
    Posts:
    5,434
    Very nice! I'll give this a try!
     
  34. mickylin

    mickylin

    Joined:
    May 16, 2015
    Posts:
    3
    Hi Elias_t:
    I am coming again.I have some problem about the aeetbundle.When I build my project in unity5.4.1 version with assetbundle in xcode on Imac,it's complier error and show the meassage as follows:

    2016-12-14 11:36:44.528177 test[1302:571123] -> registered mono modules 0x1f8d4a0
    2016-12-14 11:36:44.765508 test[1302:571123] You've implemented -[<UIApplicationDelegate> application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add "remote-notification" to the list of your supported UIBackgroundModes in your Info.plist.
    -> applicationDidFinishLaunching()
    2016-12-14 11:36:45.003174 test[1302:571123] Metal GPU Frame Capture Enabled
    2016-12-14 11:36:45.003984 test[1302:571123] Metal API Validation Enabled
    -> applicationDidBecomeActive()
    Renderer: PowerVR SGX 554
    Vendor: Imagination Technologies
    Version: OpenGL ES 2.0 IMGSGX554-128
    GLES: 2
    GL_OES_depth_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_vertex_array_object GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_draw_instanced GL_EXT_instanced_arrays GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_pvrtc_sRGB GL_EXT_read_format_bgra GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_texture_lod GL_EXT_shadow_samplers GL_EXT_sRGB GL_EXT_texture_filter_anisotropic GL_EXT_texture_rg GL_EXT_texture_storage GL_APPLE_clip_distance GL_APPLE_color_buffer_packed_float GL_APPLE_copy_texture_levels GL_APPLE_framebuffer_multisample GL_APPLE_rgb_422 GL_APPLE_sync GL_APPLE_texture_format_BGRA8888 GL_APPLE_texture_max_level GL_APPLE_texture_packed_float GL_IMG_read_format GL_IMG_texture_comp
    ression_pvrtc
    OPENGL LOG: Creating OpenGL ES 2.0 graphics device ; Context level <OpenGL ES 2.0> ; Context handle 341669936
    Initialize engine version: 5.4.3f1 (01f4c123905a)
    -------- Shader compilation failed
    #version 100
    #extension GL_EXT_frag_depth : enable
    precision highp float;
    uniform highp vec4 _ProjectionParams;
    uniform highp vec4 _ZBufferParams;
    uniform highp mat4 unity_CameraToWorld;
    uniform highp mat4 _NonJitteredVP;
    uniform highp mat4 _PreviousVP;
    uniform highp sampler2D _CameraDepthTexture;
    varying highp vec2 xlv_TEXCOORD0;
    varying highp vec3 xlv_TEXCOORD1;
    void main ()
    {
    highp vec4 tmpvar_1;
    tmpvar_1 = texture2D (_CameraDepthTexture, xlv_TEXCOORD0);
    mediump vec2 tmpvar_2;
    highp vec4 tmpvar_3;
    tmpvar_3.w = 1.0;
    tmpvar_3.xyz = ((xlv_TEXCOORD1 * (_ProjectionParams.z / xlv_TEXCOORD1.z)) * (1.0/((
    (_ZBufferParams.x * tmpvar_1.x)
    + _ZBufferParams.y))));
    highp vec4 tmpvar_4;
    tmpvar_4 = (unity_CameraToWorld * tmpvar_3);
    highp vec4 tmpvar_5;
    tmpvar_5 = (_PreviousVP * tmpvar_4);
    highp vec4 tmpvar_6;
    tmpvar_6 = (_NonJitteredVP * tmpvar_4);
    highp vec2 tmpvar_7;
    tmpvar_7 = (((tmpvar_5.xy / tmpvar_5.w) + 1.0) / 2.0);
    highp vec2 tmpvar_8;
    tmpvar_8 = (((tmpvar_6.xy / tmpvar_6.w) + 1.0) / 2.0);
    tmpvar_2 = (tmpvar_8 - tmpvar_7);
    mediump vec4 tmpvar_9;
    tmpvar_9.zw = vec2(0.0, 1.0);
    tmpvar_9.xy = tmpvar_2;
    gl_FragDepthEXT = tmpvar_1.x;
    gl_FragData[0] = tmpvar_9;
    }
    -------- failed compiling:
    fragment evaluation shader
    WARNING: 0:4: extension 'GL_EXT_frag_depth' is not supported
    ERROR: 0:38: Use of undeclared identifier 'gl_FragDepthEXT'

    Note: Creation of internal variant of shader 'Hidden/Internal-MotionVectors' failed.
    WARNING: Shader Unsupported: 'Hidden/Internal-MotionVectors' - Pass '' has no vertex shader
    WARNING: Shader Unsupported: 'Hidden/Internal-MotionVectors' - Setting to default shader.
    UnloadTime: 4.302458 ms
    2016-12-14 11:36:46.442663 test[1302:571123] You are using download over http. Currently unity adds NSAllowsArbitraryLoads to Info.plist to simplify transition, but it will be removed soon. Please consider updating to https.
    Setting up 1 worker threads for Enlighten.
    Thread -> id: 40595000 -> priority: 1
    starting www download: http://192.168.153.157:81/Scence/iOS/FPSFisher04_ObjectPool.unity3d
    2016-12-14 11:36:49.928846 test[1302:571123] You are using download over http. Currently unity adds NSAllowsArbitraryLoads to Info.plist to simplify transition, but it will be removed soon. Please consider updating to https.
    loading from cache: http://192.168.153.157:81/Scence/iOS/FPSFisher04_ObjectPool.unity3d
    Could not produce class with ID 12.
    This could be caused by a class being stripped from the build even though it is needed. Try disabling 'Strip Engine Code' in Player Settings.

    (Filename: Line: 1289)

    Could not produce class with ID 15.
    This could be caused by a class being stripped from the build even though it is needed. Try disabling 'Strip Engine Code' in Player Settings.

    (Filename: Line: 1289)

    Could not produce class with ID 26.
    This could be caused by a class being stripped from the build even though it is needed. Try disabling 'Strip Engine Code' in Player Settings.

    (Filename: Line: 1289)

    Unloading 4 Unused Serialized files (Serialized files now loaded: 2)
    UnloadTime: 7.814625 ms
    Could not produce class with ID 91.
    This could be caused by a class being stripped from the build even though it is needed. Try disabling 'Strip Engine Code' in Player Settings.
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)

    [ line 1289]
    (Filename: Line: 1289)

    Could not produce class with ID 91.
    This could be caused by a class being stripped from the build even though it is needed. Try disabling 'Strip Engine Code' in Player Settings.
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)

    [ line 1289]
    (Filename: Line: 1289)

    Could not produce class with ID 91.
    This could be caused by a class being stripped from the build even though it is needed. Try disabling 'Strip Engine Code' in Player Settings.
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)

    [ line 1289]
    (Filename: Line: 1289)

    Could not produce class with ID 91.
    This could be caused by a class being stripped from the build even though it is needed. Try disabling 'Strip Engine Code' in Player Settings.
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)
    System.Collections.Generic.EqualityComparer`1:GetHashCode(T)

    [ line 1289]
    (Filename: Line: 1289)

    test was compiled with optimization - stepping may behave oddly; variables may not be available.
    (lldb)

    -------------------------------------------------------------------------------

    I dont know what happen but when I build without assetbundle,it's succssed and there is no error to happen so I guess the assetbundle doesn't maintain the ocean shader? I look forward to your apply. Thank you for your response anyway.
     
  35. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi. Your issue comes from unity.
    This is the problem: WARNING: 0:4: extension 'GL_EXT_frag_depth' is not supported

    Other users report it here: https://issuetracker.unity3d.com/is...-depth-is-not-supported-when-running-on-gles2

    A user at stackoverflow had this solution:

    http://stackoverflow.com/questions/...ion-crashes-at-ios-due-to-shader-not-compiled
     
  36. pat_trick

    pat_trick

    Joined:
    May 23, 2016
    Posts:
    27
    Hi elias_t,

    Thank you for your excellent work on this project. We've been using it for a simulation in our class for a Virtual Reality sailing teaching tool for ocean navigation, using the HTC Vive headset, the Oculus Rift, and the Microsoft Hololens. However, it was pointed out by our professor that the textures for the ocean surface do not correctly render in Stereoscopic 3D at this time.

    My understanding is that this requires the texture to present a different copy to each camera eye. https://docs.unity3d.com/Manual/StereoscopicRendering.html has a (brief) overview of the requirements. I know this isn't a current focus of your work on this project, but I'd be interested in working to help bring Stereoscopic support to this library.

    Thanks for your time.
     
  37. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi this is something that I have heard for the 1st time. I mean the different copy of the textures for each eye.
    In that case you could create copies of the textures involved (they are 2. 1 normal and 1 foam) and create a new material for the second camera.
     
  38. matin_ucf

    matin_ucf

    Joined:
    May 23, 2016
    Posts:
    2
    hi, I am totally new user in unity. I want to animate ocean like this. How can I work with your program? I download it but I did not find scene to open it.
    Thanks
     
  39. pat_trick

    pat_trick

    Joined:
    May 23, 2016
    Posts:
    27
    OK, I'll work on seeing if I can get this to cooperate, and will create a pull request to the github repository if the results are successful.
     
    elias_t likes this.
  40. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi. In the "Assets\Ocean\Scene" are the example scenes.
     
  41. sniperisa

    sniperisa

    Joined:
    Sep 20, 2015
    Posts:
    18
    I got weired effects when there are transparent objects on or above the ocean.
    At some camera angles they just dissapear.

    I also found a solution:
    In the ocean.shader i added "ZWrite Off" in each subshader. That solved it.
     
  42. amw915

    amw915

    Joined:
    Nov 8, 2016
    Posts:
    1
    I'm sure you're sick of hearing this by now, but I absolutely LOVE this ocean! I was using another before (a very popular one who's owner deleted their blog and stopped supporting it), but found that that particular one didn't work with the HTC Vive at build-time. So I did some searching and stumbled upon this one. It works perfectly both in standard Unity projects and in the HTC Vive one I have. Thank you so much for making this available to everyone.
     
    hopeful likes this.
  43. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi. Thanks! Good to know that people actually use it.
    And good to know about the Vive also.

    In the next days a roundup update will come with bugfixes and later a bigger update with shadow support etc.
     
    Last edited: Dec 23, 2016
    VKirillov, amw915 and hopeful like this.
  44. sniperisa

    sniperisa

    Joined:
    Sep 20, 2015
    Posts:
    18
    Today I found another "bug" which seams to be intentional but has strange effects in my game:

    In the boyancy-script, the gravity is set to false when the ship is not visible in a camera, and there is no boyancy calculated.
    Since in my game the ships are moved by forces, they begin moving very strangly until they are caught by a camera again. Sometimes they even begin to fly!

    So i added a line in the update() function of that script that sets visible to true all the time :)
     
  45. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi. This is intentional. In case you have many ships, it is a simple occlusion method.
    You can simply comment out the lines that do that.
     
  46. tawdry

    tawdry

    Joined:
    Sep 3, 2014
    Posts:
    1,357
    Hi does anyone know how to increase the tile count. I can't find the code and typing in higher numbers in the slider input box just resets to 15.?
     
  47. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    Hi.

    The logic right now is to have the max number of 15 tiles. Which means the max number of tiles in each x or z direction.
    I will try to enable higher count.
     
  48. tawdry

    tawdry

    Joined:
    Sep 3, 2014
    Posts:
    1,357
    Cool thx would somehow increasing the tiles really effect the logic if it already scales with tilecount?
     
  49. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    As it is right now, the tilecount influences the lod levels.
    I have to separate those to make this work the way you want. Will see ...
     
    VKirillov likes this.
  50. tawdry

    tawdry

    Joined:
    Sep 3, 2014
    Posts:
    1,357
    Tried a few changes but nothing changed:D Found the gui slider increased that from 15 to 50 then did a find "15" and changed all those values to 50 but the tilecount in play remained the same:( .Oh there was one change that cirle around the tiles was situated further out.

    Elias another question on the tile size it has 512, 30 ,512 what does the 30 for y do and would reducing it have any effect on performance. Thx .

    Oh and the ocean is great in general so not dissing it in any way just have a huge world with high elevations and want to be able for the player to not see beyond the edge could use fog otherwise i suppose.