shaderforge Parallax节点

一、官方说明

Parallax节点输出的uv是输入的uv经过视差偏移的得到结果,其中视差偏移程由[Hei]指定,[Hei]在计算偏移量时有两个相关参数:深度[Dep]和基准高度[Ref]。
高度图0(白色)对应的部位会凸出来。
高度图1(黑色)对应的部位会凹进去。

二、节点输入

1.UV

物体的uv坐标信息,shaderforge提供一个数据节点[UV Coord.]用于提供物体的uv信息

2.Hei

视差高度值

3. Dep

视差公式的参数之一,默认值为0.05

4. Ref

视差公式的参数之一,默认值为0.5

三、节点输出

1.UV

变换后的uv坐标信息

四、小应用-使用视差贴图实现凹凸效果

使用高度图的R通道值作为[Hei]的输入数据
高度图0(白色)对应的部位会凸出来。
高度图1(黑色)对应的部位会凹进去。

五、Unityshader实现Parallax节点

视差贴图,和法线贴图都是用于制作凹凸效果。与法线贴图不同,视差效果不依赖于光照。

写法:

Shader "Hidden/Parallax"
{Properties{_MainTex ("Texture", 2D) = "white" {}_GreyTex("GreyScale Texture", 2D) = "white" {}_Hei("Hei", Float) = 1.0_Dep("Dep", Float) = 0.05_Ref("Ref", Float) = 0.5//未选中时使用_Hei作为时差值, 选中时视差值从灰度图提取(_Hei失效)[Toggle]_USEGREYTEX("USE GreyScale?", INT) = 0}SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma shader_feature _USEGREYTEX_ON#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;float3 normal: NORMAL;float4 tangent: TANGENT;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;float3 normalDir : TEXCOORD1;float3 tangentDir : TEXCOORD2;float3 bitangentDir : TEXCOORD3;float4 posWorld : TEXCOORD4;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;o.normalDir = UnityObjectToWorldNormal(v.normal);o.tangentDir = normalize(mul(unity_ObjectToWorld,float4(v.tangent.xyz,0.0)).xyz);o.bitangentDir = normalize(cross(o.normalDir,o.tangentDir)*v.tangent.w);o.posWorld = mul(unity_ObjectToWorld, v.vertex);return o;}sampler2D _MainTex;sampler2D _GreyTex;float _Hei;float _Dep;float _Ref;fixed4 frag (v2f i) : SV_Target{i.normalDir = normalize(i.normalDir);float3x3 tangentTransfrom = float3x3(i.tangentDir, i.bitangentDir, i.normalDir);float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);float3 normalDirection = i.normalDir;#if _USEGREYTEX_ON_Hei = tex2D(_GreyTex,i.uv).r;#endiffloat2 uvNew = (_Dep*(_Hei-_Ref))*mul(tangentTransfrom, viewDirection).xy + i.uv;fixed4 col = tex2D(_MainTex, uvNew);return col;}ENDCG}}
}

效果展示

参考:
Parallax Mapping

【shaderforge学习笔记】 Parallax节点(视差节点)相关推荐

  1. .net学习笔记----WebConfig常用配置节点介绍

    一.配置文件入门 .Net提供了一种保存项目配置信息的办法,就是利用配置文件,配置文件的后缀一般是.config.在WinForm程序中配置文件一般是App.config.在Asp.net中一般默认是 ...

  2. 【shaderforge学习笔记】 Rotator节点

    ShaderForge Rotator节点 一.节点介绍 旋转器 输出的是输入的uv以[piv]为锚点旋转后[ang] (单位为弧度)的uv信息.如果ang没有连线,或者ang连线到time节点上,那 ...

  3. 【shaderforge学习笔记】 UVTile节点

    shaderforge UVTile节点 一. 介绍 UVTile UVTile可以用来以uv坐标为基准在一个纹理中取到其中一块的贴图. [UV]是整个贴图的UV值 [Wid]指定沿tilemap的x ...

  4. 【shaderforge学习笔记】 Hue节点(色相节点)

    shaderforge 色相节点 一.官方说明 根据Hue值输出RGB值,换句话说Hue节点的作用是,将Hue值转为相应的RGB值. 二.节点输入 Hue值 Hue节点输入值的[0,1]对应色相轮的[ ...

  5. The Things Network LoRaWAN Stack V3 学习笔记 2.5 LoRa节点配置接入

    前言 网关接入之后,再让节点接入.本篇笔记重点记录一些小坑,注意跳过. 小能手这段时间在学习 The Things Network LoRaWAN Stack V3,从使用和代码等角度对该 Stack ...

  6. MySQL学习笔记-B站动力节点

    文章目录 MySQL Day1 1.概述 2.sql.DB.DBMS分别是什么?他们之间的关系? 3.表 4.sql语句分类 5.导入数据 6.sql脚本 7.删除数据库命令 8.查看表结构 9.查看 ...

  7. JavaScript学习笔记-B站动力节点

    文章目录 1.1.什么是JavaScript,有什么用? 1.2.HTML,CSS,JavaSript三者关系 2.在HTML中怎么嵌入JavaScript代码? 3.JS的标识符和关键字 4.关于J ...

  8. html学习笔记-B站动力节点

    文章目录 1.系统结构介绍 2.软件环境准备 3.什么是HTML?怎么开发HTML?怎么运行HTML? 4.HTML是谁制定的? 5.我的第一个HTML 6.HTML的基本标签 7.HTML的实体符号 ...

  9. 数据结构学习笔记4.1--查找节点

    有序数组的优点: 在有序数组中查找数据可以用二分查找法,用这个方法在查找时效率很高,所需时间是0(logN), 然而在插入或者删除数据时,需要平均移动N/2项数据,如果需要做很多的插入删除操作,就不应 ...

最新文章

  1. JDK 13 的最新垃圾回收器ZGC,你了解多少?
  2. 【零基础】Python的入门学习
  3. php 输入内容类型,实例解析php的数据类型
  4. java home not set_Error: JAVA_HOME is not set and could not be found.
  5. CF372D. Choosing Subtree is Fun
  6. python 字节码 优化_字节码优化
  7. 计算机网络实验报告西南科技大学,西南科技大学计算机网络-实验二.docx
  8. java基础面试题之:switch的参数类型
  9. 西昌学院计算机科学与技术好不好,西昌学院好不好评价怎么样
  10. Flask Flash
  11. 灵活强大的MySQL代理中间件ProxySQL应用实战(2)
  12. 首份“中国大数据的社会经济价值研究报告”发布
  13. 指定的網域的名稱或安全性識別碼(用磁碟映像檔部署的電腦無法加入AD網域 )...
  14. Report Service 为用户“NT AUTHORITY、NETWORK SERVICE”授予的权限不足,无法进行此操作。(rsAccessDenied)处理...
  15. 构建自己的不可替代性
  16. 电商后台管理系统(一)
  17. js正则表达式的创建、边界符、量词符
  18. matlab三踪示波器,3.2 示波器CSV数据导入MATLAB
  19. pygame笔记(更新中
  20. 【视野】解密腾讯完整前端技术体系

热门文章

  1. Spring Cloud底层原理以及项目实战分析
  2. 名帖308 梁诗正 行书《行书帖选》
  3. sum()函数和count()函数的区别
  4. DIL中基本数据类型
  5. 服务器重装系统鼠标没反应,重装系统鼠标键盘不能用怎么解决-重装系统鼠标键盘失灵的解决方法 - 河东软件园...
  6. activity串行多实例审批
  7. 【解题】核电站问题(SGOI)
  8. 我学ERP 之 金蝶ERP-K3_第4章 销售管理
  9. 计算机启动后桌面上什么都没有,电脑开机后,桌面上什么都没有了?我怎么处理?好着急啊...
  10. python ip动态代理_动态代理服务器