Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
* -text | ||
|
||
*.cs text eol=lf diff=csharp | ||
*.shader text eol=lf | ||
*.cginc text eol=lf | ||
*.hlsl text eol=lf | ||
*.compute text eol=lf | ||
|
||
*.meta text eol=lf |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Windows | ||
Thumbs.db | ||
Desktop.ini | ||
|
||
# macOS | ||
.DS_Store | ||
|
||
# Vim | ||
*.swp | ||
|
||
# Unity | ||
/Library | ||
/Temp |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
using UnityEditor; | ||
using UnityEngine.Experimental.Rendering; | ||
using UnityEditor.ProjectWindowCallback; | ||
|
||
namespace Retro3D | ||
{ | ||
class Retro3DPipelineAsset : RenderPipelineAsset | ||
{ | ||
[MenuItem("Assets/Create/Render Pipeline/Retro3D/Pipeline Asset")] | ||
static void CreateRetro3DPipeline() | ||
{ | ||
ProjectWindowUtil.StartNameEditingIfProjectWindowExists( | ||
0, CreateInstance<CreateRetro3DPipelineAsset>(), | ||
"Retro3D Pipeline.asset", null, null | ||
); | ||
} | ||
|
||
class CreateRetro3DPipelineAsset : EndNameEditAction | ||
{ | ||
public override void Action(int instanceId, string pathName, string resourceFile) | ||
{ | ||
var instance = CreateInstance<Retro3DPipelineAsset>(); | ||
AssetDatabase.CreateAsset(instance, pathName); | ||
} | ||
} | ||
|
||
protected override IRenderPipeline InternalCreatePipeline() | ||
{ | ||
return new Retro3DPipeline(); | ||
} | ||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
using UnityEngine; | ||
using UnityEngine.Rendering; | ||
using UnityEngine.Experimental.Rendering; | ||
|
||
namespace Retro3D | ||
{ | ||
public class Retro3DPipeline : RenderPipeline | ||
{ | ||
CommandBuffer _clearCommand; | ||
|
||
public override void Dispose() | ||
{ | ||
base.Dispose(); | ||
|
||
if (_clearCommand != null) _clearCommand.Dispose(); | ||
} | ||
|
||
public override void Render(ScriptableRenderContext context, Camera[] cameras) | ||
{ | ||
base.Render(context, cameras); | ||
|
||
if (_clearCommand == null) | ||
{ | ||
_clearCommand = new CommandBuffer(); | ||
_clearCommand.name = "Clear"; | ||
_clearCommand.ClearRenderTarget(true, true, Color.black); | ||
} | ||
|
||
foreach (var camera in cameras) | ||
{ | ||
context.ExecuteCommandBuffer(_clearCommand); | ||
|
||
var culled = new CullResults(); | ||
CullResults.Cull(camera, context, out culled); | ||
context.SetupCameraProperties(camera); | ||
|
||
var settings = new DrawRendererSettings(camera, new ShaderPassName("Base")); | ||
var filter = new FilterRenderersSettings(true); | ||
filter.renderQueueRange = RenderQueueRange.opaque; | ||
context.DrawRenderers(culled.visibleRenderers, ref settings, filter); | ||
|
||
context.Submit(); | ||
} | ||
} | ||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
Shader "Retro3D/Surface" | ||
{ | ||
Properties | ||
{ | ||
_MainTex("Texture", 2D) = "white" {} | ||
_Color("Tint", Color) = (0.5, 0.5, 0.5) | ||
} | ||
|
||
HLSLINCLUDE | ||
|
||
#include "UnityCG.cginc" | ||
|
||
sampler2D _MainTex; | ||
float4 _MainTex_ST; | ||
half3 _Color; | ||
|
||
struct Attributes | ||
{ | ||
float4 position : POSITION; | ||
float2 texcoord : TEXCOORD; | ||
}; | ||
|
||
struct Varyings | ||
{ | ||
float4 position : SV_POSITION; | ||
noperspective float2 texcoord : TEXCOORD; | ||
UNITY_FOG_COORDS(1) | ||
}; | ||
|
||
Varyings Vertex(Attributes input) | ||
{ | ||
float3 vp = UnityObjectToViewPos(input.position.xyz); | ||
vp = floor(vp * 64) / 64; | ||
Varyings output; | ||
output.position = UnityViewToClipPos(vp); | ||
output.texcoord = TRANSFORM_TEX(input.texcoord, _MainTex); | ||
UNITY_TRANSFER_FOG(output, output.position); | ||
return output; | ||
} | ||
|
||
half4 Fragment(Varyings input) : SV_Target | ||
{ | ||
float2 uv = input.texcoord; | ||
uv = floor(uv * 256) / 256; | ||
half4 c = tex2D(_MainTex, uv); | ||
c = floor(c * 12) / 12; | ||
c.rgb *= _Color * 2; | ||
UNITY_APPLY_FOG(input.fogCoord, c); | ||
return c; | ||
} | ||
|
||
ENDHLSL | ||
|
||
SubShader | ||
{ | ||
Pass | ||
{ | ||
Tags { "LightMode" = "Base" } | ||
HLSLPROGRAM | ||
#pragma vertex Vertex | ||
#pragma fragment Fragment | ||
ENDHLSL | ||
} | ||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.