-
Notifications
You must be signed in to change notification settings - Fork 2
/
VertexColorSize.shader
69 lines (56 loc) · 1.78 KB
/
VertexColorSize.shader
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
* Hardware Depth Unprojector (shader)
*
* Copyright 2020 (C) Bartosz Meglicki <[email protected]>
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Shader for rendering point cloud from StructuredBuffer.
* Includes colors and varies size with distance from the camera.
*
* This is Unity flavour HLSL. You may recompile it with Unity for OpenGL, Vulkan etc.
*/
Shader "Custom/VertexColorSize"
{
SubShader
{
Tags { "RenderType"="Opaque" }
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct VertexData
{
float4 position : POSITION;
float4 color : COLOR;
};
struct VertexOutput
{
float4 position : SV_POSITION;
float4 color : COLOR;
float size : PSIZE;
};
float4x4 transform; //typically local to world matrix
StructuredBuffer<VertexData> vertices;
VertexOutput vert(uint vid : SV_VertexID)
{
VertexData vin = vertices[vid];
VertexOutput vout;
vout.position = mul(transform, vin.position);
vout.position = UnityObjectToClipPos(vout.position);
vout.color = vin.color;
vout.size = 1.0; //disable size computation for now
return vout;
}
float4 frag(VertexOutput output) : SV_Target
{
return output.color;
}
ENDCG
}
}
}