All Projects → JiepengTan → Unity Raymarching Framework

JiepengTan / Unity Raymarching Framework

Licence: mit
A framework to easy implement raymarching in unity. Include lots of hash,noise,fbm,SDF,rotate functions

Projects that are alternatives of or similar to Unity Raymarching Framework

Gpu Planetary Rendering
GPU atmosphertic scattering and planet generation in Unity 3D
Stars: ✭ 92 (-28.68%)
Mutual labels:  unity, shader, hlsl
Uraymarching
Raymarching Shader Generator in Unity
Stars: ✭ 793 (+514.73%)
Mutual labels:  unity, shader, hlsl
Unity Ui Rounded Corners
This components and shaders allows you to add rounded corners to UI elements!
Stars: ✭ 307 (+137.98%)
Mutual labels:  unity, shader, hlsl
Bloodfx
Procedural blood stain shader
Stars: ✭ 170 (+31.78%)
Mutual labels:  unity, shader, hlsl
Proccharvfx
Procedural character generation with Unity Shader Graph and VFX Graph
Stars: ✭ 114 (-11.63%)
Mutual labels:  unity, shader, hlsl
Unity Shaders
✨ Shader demo - More than 300 examples
Stars: ✭ 198 (+53.49%)
Mutual labels:  unity, shader, hlsl
Noiseshader
Noise shader library for Unity
Stars: ✭ 616 (+377.52%)
Mutual labels:  unity, shader, hlsl
Skeletalgeometriceffects
Experiments on geometry shader instancing with skeletal animations
Stars: ✭ 436 (+237.98%)
Mutual labels:  unity, shader, hlsl
Computesharp
A .NET 5 library to run C# code in parallel on the GPU through DX12 and dynamically generated HLSL compute shaders, with the goal of making GPU computing easy to use for all .NET developers! 🚀
Stars: ✭ 982 (+661.24%)
Mutual labels:  shader, hlsl, library
Bonzomatic
Live shader coding tool and Shader Showdown workhorse
Stars: ✭ 829 (+542.64%)
Mutual labels:  shadertoy, shader, hlsl
Computestochasticreflections
Compute Stochastic Screen Space Reflections for unity post processing
Stars: ✭ 163 (+26.36%)
Mutual labels:  unity, shader, hlsl
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+8968.22%)
Mutual labels:  unity, shader, hlsl
Unityurptoonlitshaderexample
A very simple toon lit shader example, for you to learn writing custom lit shader in Unity URP
Stars: ✭ 2,988 (+2216.28%)
Mutual labels:  unity, shader, hlsl
Standardgeometryshader
An example of a geometry shader with Unity's standard lighting model support.
Stars: ✭ 303 (+134.88%)
Mutual labels:  unity, shader, hlsl
Unity3d Cg Programming
Various shaders.
Stars: ✭ 800 (+520.16%)
Mutual labels:  unity, shader, hlsl
Nnao
Neural Network Ambien Occlusion based on http://theorangeduck.com/page/neural-network-ambient-occlusion
Stars: ✭ 57 (-55.81%)
Mutual labels:  unity, shader, hlsl
Pbr proj
Shader of PBR for Unity
Stars: ✭ 68 (-47.29%)
Mutual labels:  unity, shader, hlsl
Zui
⬢ Zsh User Interface library – CGI+DHTML-like rapid application development with Zsh
Stars: ✭ 95 (-26.36%)
Mutual labels:  framework, library
Dq Skinning For Unity
Stars: ✭ 93 (-27.91%)
Mutual labels:  unity, hlsl
Swift Screencapture
A Swift framework to easily capture the screen on OS X.
Stars: ✭ 105 (-18.6%)
Mutual labels:  framework, library

Unity-Raymarching-Framework

A framework to easy implement raymarching in unity. Include lots of hash,noise,fbm,SDF,rotate functions,most of them come from shadertoy,with this library,you can easy write raymarching shader in unity without rewrite the noise function again.

also,this framework provide a easy way to merge your raymarching scene with unity scene.

Include Noise:

1.PNoise :Perlin Noise
2.VNoise :Value Noise
3.SNoise :Simplex Noise
4.WNoise :Worley Noise (Voronoi)
4.TNoise :TriNoise

Hash

// x out, x in...
HashXX
eg: float2 Hash22(float2 p)
means 2 in 2 out

FBM

float FBM( float2 p )
float FBM( float2 p,float iterNum)

Rot:

Rot2D
Rot3D

SDF:

SdBox ...
OpU OpS ...

File specification:

.Math.cginc :some math functions and macros
.Hash.cginc : hash function
.Noise.cginc : Noise functions eg:PerlinNoise,ValueNoise,SimplexNoise,VoronoiNoise,TriNoise
.FBM.cginc: Fbm functions
.Feature.cginc: some special function : Caustic,Stars,Cloud,Fog ...
.SDF.cginc :some distance function use for modeling
.Framework3D.cginc :a raymarching framework
.Framework3D_DefaultScene.cginc : use for quickly create a Test scene

With this framework,you can easy merge raymarching scene with Unity ,and easy to walk around in it ,without rewrite a "SetCamera" function to init ro,rd variable.

Here is a example:

Shader "FishManShaderTutorial/RaymarchMergeExample" {
    Properties{
        _MainTex("Base (RGB)", 2D) = "white" {}
    }
    SubShader{
        Pass {
            ZTest Always Cull Off ZWrite Off
            CGPROGRAM
#pragma vertex vert   
#pragma fragment frag  
#include "ShaderLibs/Framework3D.cginc"
            float4 ProcessRayMarch(float2 uv,float3 ro,float3 rd,inout float sceneDep,float4 sceneCol)  {
                float3 col = float3(0.,0.,0.);
                float3 n = float3(0.,1.0,0.);
                float t = sceneDep + 10;
                float occ = 0.;
                float3 sc =  float3(0.,0.5,0.);
                float3 sr = 0.5;
                float3 ce = sc - ro;
                float b = dot( rd, ce );
                float tt = sr*sr - (dot( ce, ce )- b*b );
                if( tt > 0.0 ){
                    t = b - sqrt(tt);
                    float3 p = ro+t*rd;
                    col = 0.5+0.5*cos(2.*PI*(float3(1.,1.,1.)*p.y*0.2+float3(0.,0.33,0.67)));
                }
                MergeRayMarchingIntoUnity(t,col, sceneDep,sceneCol);
                return float4(col,1.0);
            } 
            ENDCG
        }//end pass
    }//end SubShader
    FallBack Off
}

A simple scene example:

// create by JiepengTan 2018-04-14 
// email: [email protected]
Shader "FishManShaderTutorial/SDFBounceBall" {
    Properties{
        _MainTex("Base (RGB)", 2D) = "white" {}
    }
    SubShader{
        Pass {
            ZTest Always Cull Off ZWrite Off
            CGPROGRAM

#pragma vertex vert   
#pragma fragment frag  

#define DEFAULT_PROCESS_FRAG
#define DEFAULT_RENDER
#include "ShaderLibs/Framework3D_DefaultRender.cginc"
            
            fixed SdBounceBalls(fixed3 pos){
                fixed SIZE = 2.;
                fixed2 gridSize = fixed2(SIZE,SIZE);
                fixed rv = Hash12( floor((pos.xz) / gridSize));
                pos.xz = OpRep(pos.xz,gridSize);
                fixed bollSize = 0.1;
                fixed bounceH = .5;
                return SdSphere(pos- fixed3(0.,(bollSize+bounceH+sin(_Time.y*3.14 + rv*6.24)*bounceH),0.),bollSize);
            }
            // user define mat shading function 
            fixed3 MatCol(float matID,float3 pos,float3 nor)
            { 
                // material        
                fixed3 col = 0.45 + 0.35*sin( fixed3(0.05,0.08,0.10)*(matID-1.0) );
                if( matID<1.5 )
                {       
                    fixed f = CheckersGradBox( 5.0*pos.xz );
                    col = 0.3 + f*fixed3(0.1,0.1,0.1);
                }
                return col;
            }
            // user define scene construct function
            fixed2 Map( in fixed3 pos )
            {
                fixed2 res = fixed2( SdPlane(     pos), 1.0 )  ;
                res = OpU( res, fixed2( SdBounceBalls( pos),1.) );
                return res;
            }

            ENDCG
        }//end pass
    }//end SubShader
    FallBack Off
}

More examples:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].