raymarch | Unity project for building ray | Game Engine library

 by   jaburns C# Version: Current License: MIT

kandi X-RAY | raymarch Summary

kandi X-RAY | raymarch Summary

raymarch is a C# library typically used in Gaming, Game Engine, Unity applications. raymarch has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can download it from GitHub.

System for integrating geometry defined by distance fields/functions in to a classically rendered Unity scene.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              raymarch has a low active ecosystem.
              It has 9 star(s) with 2 fork(s). There are 2 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              raymarch has no issues reported. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of raymarch is current.

            kandi-Quality Quality

              raymarch has no bugs reported.

            kandi-Security Security

              raymarch has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              raymarch is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              raymarch releases are not available. You will need to build from source code and install.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of raymarch
            Get all kandi verified functions for this library.

            raymarch Key Features

            No Key Features are available at this moment for raymarch.

            raymarch Examples and Code Snippets

            No Code Snippets are available at this moment for raymarch.

            Community Discussions

            QUESTION

            Three.js - Scaling a plane to full screen
            Asked 2020-Dec-10 at 22:15

            I am adding a plane to the scene like this:

            ...

            ANSWER

            Answered 2020-Sep-13 at 16:35

            You can easily achieve such a fullscreen effect by using the following setup:

            Source https://stackoverflow.com/questions/63872740

            QUESTION

            WebGL Reading pixels properly from offscreen canvas
            Asked 2020-Oct-27 at 12:37

            I know there are a lot of resources on this, but none of them have worked for me.
            Some are: webgl readpixels is always returning 0,0,0,0,
            and this one: https://stackoverflow.com/questions/44869599/readpixels-from-webgl-canvas\ as well as this one: Read pixels from a WebGL texture
            but none of them have been either helpful or successful.

            The goal: Render an offscreen canvas with a WebGL shader, then use that as a texture in a separate WebGL shader.

            Notes:

            • For these WebGL shaders, I'm using a generic vertex shader used for pixel shaders, specifically, a raytracer/raymarcher. This is: attribute vec2 a_position; void main() { gl_Position = vec4(a_position.xy, 0.0, 1.0); }. This vertex shader is inputted two triangles that cover the screen, so basically the fragment shader is doing all the work.

            Problem: In order to get the image data off of the offscreen canvas, I've tried these methods:

            1. The WebGL gl.readPixels function
            ...

            ANSWER

            Answered 2020-Oct-26 at 20:32

            For some reason gl.readPixels works better with a Uint8Array.

            Source https://stackoverflow.com/questions/64543523

            QUESTION

            Confusing issue with normalize
            Asked 2020-Jun-07 at 17:41

            I am follow a guide on ray marching by The Art of Code, and I tried to implement my own ray marcher without looking at the video. I was wondering if I could get some help with my code. My code is below. The confusion it at line 86, which is at the bottom of the code and marked with a comment.

            Normalize should not be needed here since the ray_direction is normalized in the RayMarch function. Therefore if the normalize is removed from line 86 nothing should change, yet this is not the case. What is going on here?

            ...

            ANSWER

            Answered 2020-Jun-07 at 17:41

            After the call to RayMarch is this line:

            Source https://stackoverflow.com/questions/62248695

            QUESTION

            Why am I getting a for-loop error in Unity RayMarching shader?
            Asked 2020-Apr-26 at 11:08

            This is my first shader so it's probably some dumb tiny error. I'm following a tutorial on YouTube: https://www.youtube.com/watch?v=S8AWd66hoCo&t=83s&pbjreload=10

            I'm stuck with the distance function (for a sphere) and simply can't get it to work without some weird error going with my for loop. Everything before that worked perfectly. I rewrote the for-loop but get this error over and over.

            Thank you in advance!

            (Unity 2019.2.19f1)

            ERRORS:

            ...

            ANSWER

            Answered 2020-Apr-26 at 11:08

            Remove the = signes from your defines.

            Source https://stackoverflow.com/questions/61438932

            QUESTION

            Why are my Ray march fragment shader refelction texture lookups slowing my frame rate?
            Asked 2020-Mar-12 at 04:52

            I’ve written a Fragment shader in GLSL, using shader toy. Link : https://www.shadertoy.com/view/wtGSzy

            most of it works, but when I enable texture lookups in the reflection function, the performance drops from 60FPS to 5~FPS.

            The code in question is on lines 173 - 176

            ...

            ANSWER

            Answered 2020-Mar-12 at 04:52

            [...] This same code can bee seen in my rayMarch function (lines 274-277) and works fine for colouring my objects. [...]

            The "working" texture lookup is executed in a loop in rayMarch. MAX_MARCHING_STEPS is 255, so the lookup is done at most 255 times.

            Source https://stackoverflow.com/questions/60599084

            QUESTION

            Wobble in volumetric fixed step raymarching
            Asked 2020-Jan-17 at 17:43

            I'm running into a bug with my shaders. For the vertex:

            ...

            ANSWER

            Answered 2020-Jan-17 at 16:14

            The issue is caused, because (from OpenGL ES Shading Language 1.00 Specification - 4.3.5 Varying)

            varying variables are set per vertex and are interpolated in a perspective-correct manner over the primitive being rendered.

            To make your algorithm work, you have to interpolate the direction of the ray noperspective.
            Since GLSL ES 1.00 does not provide Interpolation qualifiers you have to find a workaround.

            Compute the ray in the fragment shader:

            Source https://stackoverflow.com/questions/59786805

            QUESTION

            Flow Control in HLSL
            Asked 2019-Nov-16 at 04:06

            I recently read this paper about raymarching clouds (careful it´s an PDF, in case you dont want that: http://www.diva-portal.org/smash/get/diva2:1223894/FULLTEXT01.pdf) where the author goes on about optimizing (page 22ff.) the algorithm via reprojection. He states that by raymarching only 1/16th of all pixels per frame (the selected pixel hopping around in a 4x4 grid) and reprojecting the rest, he got about 10 times a performance increase.

            I now tried implementing this as well in Unreal Engine 4 (custom HLSL shader) and I got the raymarching as well as the reprojection working now. However I´m stuck at actually only running the raymarching on the necessary pixels. As far as I´m aware with any branching in HLSL both sides of the branch will be calculated and one will be thrown away. I therefore can´t do something like this pseudo code in the pixel shader: if(!PixelReprojection) { return 0;} else { return Raymarch(...); } as it will calculate the Raymarch even for pixels that are getting reprojected.

            I don´t see any other way though to archieving this... Is there any kind of branching in HLSL that allows this? It can´t be static as the pixels subjected to raymarching and reprojecting change every frame. I´m really curious on any ideas how the author could have achieved this tenfold increase in performance as he is writing the code on a GPU too, as far as I´m aware.

            I´d greatly appreciate any kind of input here.

            Regards, foodius

            ...

            ANSWER

            Answered 2019-Nov-16 at 04:06

            TLDR: use the attribute [branch] in front of your if-statement.

            As far as I´m aware with any branching in HLSL both sides of the branch will be calculated and one will be thrown away

            This is actually not fully correct. Yes, a branch can be flattened, which means that both sides are calculated as you described, but it can also be not flattened (called dynamic branching).

            Now, not flattening a branch has some disadvantages: If two threads in the same wave take different paths in the branch, a second wave has to be spawned, because all threads in a wave have to run the same code (so some threads would be moved to the newly spawned wave). Therefore, in such a case, a lot of threads are "disabled" (meaning they run the same code as the other threads in their wave, but not actually writing anything into memory). Nonetheless, this dynamic kind of branching may still be faster than running both sides of the branch, but this depends on the actual code.

            One can even remove this disadvantes by smart shader design (namely, ensure that the threads that take one side of the branch are in the same wave, so no divergence happens inside a wave. This, however, requires some knowledge of the underlying hardware, like wave size and so on)

            In any case: If not stated otherwise, the HLSL compiler decides on its own, whether a branch uses dynamic branching or is flattened. One can, however, enforce one of the two ways by adding an attribute to the if-statement, eg:

            Source https://stackoverflow.com/questions/58884776

            QUESTION

            Rendering compute-shader output to screen
            Asked 2019-Sep-22 at 18:16

            I'm trying to set up a pipeline to do some raymarching-rendering.

            At first I set up a vertex and a geometry shader to take just 1 arbitrary float, and make a quad so I can use just the fragment shader, and input data via passing it through all shaders or uniforms.

            But then I came across the compute shader, and found some tutorials but all just did nearly the same, making a quad and rendering compute-shaders output to it, I think that's pretty stupid, if you have the possibility to render how you want with the compute shader and still do tricks to get your result.

            After some further research i found the function 'glFramebufferImage2D' and as far as I understood it, it attaches an ImageTexture (the one I wrote to with my compute shader in my case) to the Framebuffer (the buffer thats displayed as far as i understood it). So i dont have to do the quad generating trick. But the code I wrote just shows a black screen. Did i get something wrong? or did i missed something in my code?

            This is my code: (I'm not worrying about warnings and detaching shader-programs yet. I just wanted to test the concept for now.)

            main.rs

            ...

            ANSWER

            Answered 2019-Sep-21 at 22:19

            There is an issue when you generate the texture. The initial value of TEXTURE_MIN_FILTER is NEAREST_MIPMAP_LINEAR. If you don't change it and you don't create mipmaps, then the texture is not "complete".
            Set the TEXTURE_MIN_FILTER to either NEAREST or LINEAR to solve the issue:

            Source https://stackoverflow.com/questions/58042393

            QUESTION

            How to use/Convert C# class in Alea?
            Asked 2019-May-17 at 10:16

            I'm working on a RayMarching Program(HomeWork) and I want it to go faster so I use the GPU with the ALEA extension. I have a problem because I can't Use The class camera In the parallel for (GPU). Thanks for your help.

            I already tried to change the tag of the class and creating them inside the Parallel for

            ...

            ANSWER

            Answered 2019-May-17 at 10:16

            You should set some variables to be the camera's variables and use them in the parallel for loop, you should also make static versions of the camera's functions and use them in the for loop. while I'm not sure this will fix it, it's something I think you should try because you said you can't use the class camera in the parallel for and now you won't be using it in there.

            Source https://stackoverflow.com/questions/55958819

            QUESTION

            The most effective way of computing distance to sphere in CUDA?
            Asked 2019-May-02 at 21:08

            I'm raymarching Signed Distance Fields in CUDA and the scene I'm rendering contains thousands of spheres (spheres have their location stored in device buffer, so my SDF function iterates through all of the spheres for each pixel).

            Currently, I'm computing distance to sphere surface as:

            sqrtf( dot( pos - sphere_center, pos - sphere_center ) ) - sphere_radius

            With the sqrt() function, the rendering took about 250ms for my scene. However, when I removed the call to sqrt() and left just dot( pos - sphere_center, pos - sphere_center ) - sphere_radius, the rendering time dropped to 17ms (and rendering black image).

            The sqrt() function seems to be the bottleneck so I want to ask if there is a way I can improve my rendering time (either by using different formula that does not use square root or different rendering approach)?

            I'm already using -use-fast-math.

            Edit: I've tried formula suggested by Nico Schertler, but it didn't work in my renderer. Link to M(n)WE on Shadertoy.

            ...

            ANSWER

            Answered 2019-May-02 at 21:08

            (Making my comment into an answer since it seems to have worked for OP)

            You're feeling the pain of having to compute sqrt(). I sympathize... It would be great if you could just, umm, not do that. Well, what's stopping you? After all, the square-distance to a sphere is a monotone function from $R^+$ to $R^+$ - hell, it's actually a convex bijection! The problem is that you have non-squared distances coming from elsewhere, and you compute:

            Source https://stackoverflow.com/questions/55930232

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install raymarch

            You can download it from GitHub.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/jaburns/raymarch.git

          • CLI

            gh repo clone jaburns/raymarch

          • sshUrl

            git@github.com:jaburns/raymarch.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Game Engine Libraries

            godot

            by godotengine

            phaser

            by photonstorm

            libgdx

            by libgdx

            aseprite

            by aseprite

            Babylon.js

            by BabylonJS

            Try Top Libraries by jaburns

            NintendoSpy

            by jaburnsC#

            ngincat

            by jaburnsShell

            rustycast

            by jaburnsRust

            node-gamesync

            by jaburnsJavaScript

            super-time-warp

            by jaburnsJavaScript