forked from przemyslawzaworski/Unity3D-CG-programming
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNurbsSurface.cs
More file actions
25 lines (22 loc) · 807 Bytes
/
NurbsSurface.cs
File metadata and controls
25 lines (22 loc) · 807 Bytes
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
using UnityEngine;
public class NurbsSurface : MonoBehaviour
{
public Shader NurbsSurfaceShader;
[Range(1, 1024)] public int TessellationFactor = 64;
public enum Mode {SurfaceDerivatives = 0, ScreenSpaceDerivatives = 1}
public Mode NormalsCalculation = Mode.SurfaceDerivatives;
private Material _Material;
void Start()
{
if (NurbsSurfaceShader == null) NurbsSurfaceShader = Shader.Find("Nurbs Surface");
_Material = new Material(NurbsSurfaceShader);
}
void OnRenderObject()
{
_Material.SetInt("_TessellationFactor", TessellationFactor);
_Material.SetInt("_NormalsMode", (int)NormalsCalculation);
_Material.SetPass(0);
int vertexCount = TessellationFactor * TessellationFactor * 6;
Graphics.DrawProceduralNow(MeshTopology.Triangles, vertexCount, 1);
}
}