IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> VR拆装(HTC vive Pro开发)——10、Matcap脚本分享 -> 正文阅读

[游戏开发]VR拆装(HTC vive Pro开发)——10、Matcap脚本分享

接上文中使用的shader编辑器Matcap,是需要掌握一定的Cg语言和unity shader开发能力的;这方面可以自行检索学习。现将博主和小伙伴处理的模型示图上传供大家参考如果觉得和自己的需求相似可以直接套用。(脚本在文末有分享,特点是光影看起来极其的假,但对电脑性能消耗比较低),在我的理解里,采用这种降低对性能消耗的非静态模型上的光影折射,已经不在受到场景光源的影响,而是模型自身产生的“死光”;对于场景内其他静态的模型可以选择布置光源进行实时烘焙,在项目打包前在对静态模型进行光影烘焙,以在保持场景相对真实性、让人拥有沉浸体验感的同时降低对电脑性能的消耗。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Shader "TJia/Matcap_PBR" {
	Properties{
		_Color("Main Color", Color) = (1,1,1,1)
		_MainTex("Albedo Tex", 2D) = "white" {}
		_BumpMap("Normal Tex", 2D) = "bump" {}
		_BumpValue("Normal Value", Range(0,10)) = 1
		_MatCapDiffuse("MatCap Diffuse (RGB)", 2D) = "white" {}
		_DiffuseValue("Diffuse Value", Range(0,5)) = 1
		_MatCapSpec("MatCap Spec (RGB)", 2D) = "white" {}
		_SpecValue("Spec Value", Range(0,2)) = 0
	}

	Subshader{
		Tags { "RenderType" = "Opaque" }

		Pass {
			Tags { "LightMode" = "Always" }

			CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag
				#include "UnityCG.cginc"

				struct v2f {
					float4 pos : SV_POSITION;
					float4	uv : TEXCOORD0;
					float3	TtoV0 : TEXCOORD1;
					float3	TtoV1 : TEXCOORD2;
				};

				uniform float4 _BumpMap_ST;
				uniform float4 _MainTex_ST;

				v2f vert(appdata_tan v)
				{
					v2f o;
					o.pos = UnityObjectToClipPos(v.vertex);
					o.uv.xy = TRANSFORM_TEX(v.texcoord,_MainTex);
					o.uv.zw = TRANSFORM_TEX(v.texcoord,_BumpMap);


					TANGENT_SPACE_ROTATION;
					o.TtoV0 = normalize(mul(rotation, UNITY_MATRIX_IT_MV[0].xyz));
					o.TtoV1 = normalize(mul(rotation, UNITY_MATRIX_IT_MV[1].xyz));
					return o;
				}

				uniform fixed4 _Color;
				uniform sampler2D _BumpMap;
				uniform sampler2D _MatCapDiffuse;
				uniform sampler2D _MainTex;
				uniform sampler2D _MatCapSpec;
				uniform fixed _BumpValue;
				uniform fixed _DiffuseValue;
				uniform fixed _SpecValue;

				float4 frag(v2f i) : COLOR
				{
					fixed4 c = tex2D(_MainTex, i.uv.xy);
					float3 normal = UnpackNormal(tex2D(_BumpMap, i.uv.zw));
					normal.xy *= _BumpValue;
					normal.z = sqrt(1.0 - saturate(dot(normal.xy ,normal.xy)));
					normal = normalize(normal);

					half2 vn;
					vn.x = dot(i.TtoV0, normal);
					vn.y = dot(i.TtoV1, normal);

					vn = vn * 0.5 + 0.5;

					fixed4 matcapDiffuse = tex2D(_MatCapDiffuse, vn) * _DiffuseValue;
					fixed4 matcapSpec = tex2D(_MatCapSpec, vn) * _SpecValue;
					fixed4 finalColor = matcapDiffuse * c * _Color + matcapSpec;
					return finalColor;
				}

			ENDCG
		}
	}
}
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:27:58  更:2021-09-12 13:28:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 14:44:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码