title: unity-shader-曲面细分与置换贴图
categories: Unity3d-Shader
tags: [unity, shader, tessellation, displacement]
date: 2019-05-22 15:37:34
comments: false

低模通过 置换贴图 增加曲面, 表现出高模效果
相比较 法线贴图 , 置换贴图 是真实改变顶点的位置, 会有遮挡, 而 法线贴图 只是在改变 片段 光照的视觉效果, 并不会修改模型的顶点位置.


前篇

  • unity 官网说明 - https://docs.unity3d.com/Manual/SL-SurfaceShaderTessellation.html
  • Unity默认管线置换贴图与曲面细分 (有法线解决方案) - https://www.wonderm.cc/2019/03/30/Unity-Tess-Displacement/

在细分后采样置换贴图,对顶点进行偏移
需要注意的是在 surf 和 frag 以外采样贴图只能使用 tex2Dlod

使用限制: the shader is automatically compiled into the Shader Model 4.6 target, 只能在 sm4.6 以后才能使用.


测试

  • 使用的资源 Organic 2

  • shader

    Shader "test/Tessellation" {Properties {_MainTex ("Base (RGB)", 2D) = "white" {}_DispTex ("Disp Texture", 2D) = "gray" {}_NormalMap ("Normalmap", 2D) = "bump" {}_RoughnessMap ("RoughnessMap", 2D) = "white" {}_AoMap ("AoMap", 2D) = "white" {}_Displacement ("Displacement", Range(0, 1.0)) = 0.3_Color ("Color", color) = (1,1,1,0)_Metallic ("Metallic", Range(0, 1.0)) = 1.0}SubShader {Tags { "RenderType"="Opaque" }LOD 300CGPROGRAM#include "UnityPBSLighting.cginc"#pragma surface surf Standard addshadow fullforwardshadows vertex:disp nolightmap#pragma target 4.6struct appdata {float4 vertex : POSITION;float4 tangent : TANGENT;float3 normal : NORMAL;float2 texcoord : TEXCOORD0;};sampler2D _DispTex;float _Displacement;void disp (inout appdata v) {float d = tex2Dlod(_DispTex, float4(v.texcoord.xy,0,0)).r * _Displacement;v.vertex.xyz += v.normal * d;}struct Input {float2 uv_MainTex;};sampler2D _MainTex;sampler2D _NormalMap;sampler2D _RoughnessMap;sampler2D _AoMap;fixed4 _Color;float _Metallic;void surf (Input IN, inout SurfaceOutputStandard o) {half4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;o.Albedo = c.rgb;o.Metallic = _Metallic;o.Normal = UnpackNormal(tex2D(_NormalMap, IN.uv_MainTex));o.Smoothness = 1 - tex2D(_RoughnessMap, IN.uv_MainTex).r;o.Occlusion = tex2D(_AoMap, IN.uv_MainTex).r;}ENDCG}FallBack "Diffuse"
    }
    
  • 效果

unity-shader-曲面细分与置换贴图相关推荐

  1. Unity URP 曲面细分

    Unity URP 曲面细分 我终于变得不像我 文章目录 Unity URP 曲面细分 1 曲面细分与镶嵌 1.1 外壳着色器 Hull Shader 1.2 镶嵌器阶段 Tessellator 1. ...

  2. Tessellation (曲面细分) Displacement Mapping (贴图置换)

    DirectX 11 Tessellation (曲面细分)-什么是 Tessellation (曲面细分) ? 它为什么可以起到如此关键的数据? 随着近期人们对 DirectX 11 的议论纷纷,你 ...

  3. Unity Shader:细分着色器(Tessellation Shader)在Unity顶点着色器中的写法以及各参数变量解释

    图1:在Unity内将sphere细分后 图2:在Unity内将sphere细分后 Unity官网关于细分着色器的资料比较少,只有在Surface Shader中使用的例子.我看了下Surface S ...

  4. Unity Shader - 切线空间的法线贴图应用(T2W W2T)

    法线贴图 法线贴图(或是法线纹理)其实就是一张图片中的RGB通道分别存储着法线方向的纹理(有些为了数据压缩将X,Y存储在RG通道,Z是通过1-dot(xy,xy)来近似计算). 它的由来是因为高模运行 ...

  5. 【Unity Shader】 CubeMap(立方体贴图)

    Unity Shader 立方体贴图 一.介绍CubeMap Shader中对CubeMap采样 Unity中如何制作CubeMap 二.Reflect CubeMap(反射立方体纹理用于环境映射) ...

  6. unity曲面细分着色器详解

     前言:本文翻译自catlikecoding上一篇十分详细的英文blog并修改了几处错误,逐行解释了如何在自己的shader中添加曲面细分支持,并给出了多种计算细分因子的方案以及它们的优缺点. 原文链 ...

  7. Unity Shader - ddx/ddy偏导函数测试,实现:锐化、高度图、Flat shading应用、高度生成法线

    文章目录 ddx, ddy 说明 DirectX - ddx, ddy OpenGL - dFdx, dFdy 伪代码表示 可用它来做什么 简单的边缘突出应用 Shader 边缘突出-锐化-增加差值 ...

  8. 曲面细分(subdivision)曲面细分着色器GPU的LOD

    曲面细分是指将一个模型的面合理的分成更多小的面,从而提升模型精度,提高渲染效果 曲面简化是指将一个模型的面合理的合成更少的面,从而降低模型精度,为特定情形下提供使用(如LOD技术) .这一过程是可以在 ...

  9. 灰度图,法线贴图,置换贴图和位移贴图

    查看全文 http://www.taodudu.cc/news/show-5684567.html 相关文章: OC置换可以混合.相乘.相加吗?多个置换贴图叠加 unity-shader-曲面细分与置 ...

最新文章

  1. 低速自动驾驶车辆的定位与建图
  2. Selective Search
  3. C#-析构方法与构造方法 087
  4. LeetCode(90):子集 II
  5. 王道操作系统考研笔记——1.1.6 系统调用
  6. 基于领域知识的Docker镜像自动构建方法
  7. 【Python】处理 joblib.externals.loky.process_executor._RemoteTraceback:PermissionError:[WinError 5] 拒绝访问
  8. spring boot +mybatis(通过properties配置) 集成
  9. 回顾 | Apache Flink Meetup 杭州站圆满结束(附PPT下载)
  10. ubuntu(乌班图) 修改ip
  11. macOS 输入法快速切换工具 —— KeyboardHolder
  12. Windows登录FTP服务器方法
  13. cURL 详解(附实例)
  14. windows电脑版微信多开的方法
  15. 2021-09-10体脂模块做体脂秤方案,体脂秤模块原理解析
  16. Mac 查找软件安装位置
  17. 什么是DAOstack
  18. 自学转行3年经验,终入职阿里!
  19. 【LOJ6570】毛毛虫计数
  20. 一键编译安装LAMP环境

热门文章

  1. 蓝桥杯 2017试题I 分巧克力(二分求解)
  2. 数据库中间件1:数据库中间件的几种功能简介
  3. 关于USB OTG HNP和SRP的基本概念
  4. 零食也会卖萌?抓住消费者购买心理
  5. 看山是山,看山不是山,看山还是山--技术经验需要不断实践、学习、总结
  6. 百货之家:SMZDM上市后的电商思考
  7. 最便宜的5G手机,Realme V3到底怎么样
  8. 对比面向过程方法和面向对象方法的优劣(全)
  9. js延迟执行函数的方法
  10. 关于python中urllib.urlencode的时候出错:UnicodeEncodeError: ‘ascii’的记录