Unity Shader学习:曲面细分

这篇博客深入探讨了Unity中Shader的曲面细分技术,包括vf shader的视距依赖曲面细分。作者引用了相关教程和文章作为参考资料,帮助读者理解这一高级渲染技巧。
摘要由CSDN通过智能技术生成

Unity Shader学习:曲面细分

vf shader的基于视距的曲面细分
参考:https://catlikecoding.com/unity/tutorials/advanced-rendering/tessellation/
https://blog.csdn.net/liu_if_else/article/details/75039895
在这里插入图片描述
在这里插入图片描述
shader部分:

Shader "Zzc/TessellationTest"
{
   
	Properties
	{
   
		_MainTex("Texture", 2D) = "white" {
   }
		_TessellationEdgeLength("Tessellation Edge Length", Range(5, 1000)) = 50
	}

	SubShader
	{
   
		Tags {
    "LightMode" = "ForwardBase" }

		Pass
		{
   
			CGPROGRAM
			#pragma vertex tessvert
			#pragma fragment frag
			#pragma hull hs
			#pragma domain ds
			#pragma target 4.6
			#pragma geometry geo

			#include "UnityCG.cginc"
			#include "Lighting.cginc"

			struct appdata
			{
   
				float4 vertex : POSITION;
				float2 uv : TEXCOORD0;
				float3 normal:NORMAL;
			};

			struct v2f
			{
   
				float2 uv : TEXCOORD0;
				float4 vertex : SV_POSITION;
				float3 worldPos:TEXCOORD1;
				float3 worldNormal:TEXCOORD2;
				float3 color:TEXCOORD3;
			};

			struct g2f {
   
				v2f data;
				float2 barycentricCoordinates : TEXCOORD0;
			};

			sampler2D _MainTex;
			float4 _MainTex_ST;
			float _TessellationEdgeLength;

			v2f vert(appdata v)
			{
   
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				o.uv = TRANSFORM_TEX(v.uv, _MainTex);
				o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
				o
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值