当前位置:网站首页>Unityshader - materialcapture material capture effect (Emerald axe)
Unityshader - materialcapture material capture effect (Emerald axe)
2022-07-03 15:25:00 【ۓ Mingzhe ڪ】
Statement : This article is a personal note , For study and research, use non-commercial , The content is obtained from personal research and comprehensive arrangement , If there is a violation , Please contact the , Violations must be corrected .
UnityShader Study Directory
List of articles
Preface
Unity2019.3.6
AmplifyShaderEditor
One 、 Realization principle
The map follows the camera
Two 、 Effect and source code display
1. Photosphere effect
Effect description :
Through camera space , Put the map uv Follow the camera .
The renderings are as follows :
AmplifyShaderEditor The node diagram is as follows :
2. Emerald axe effect
Effect description
A gradient map is superimposed on effect one , Superimposed again matcap Mapping
The renderings are as follows :
AmplifyShaderEditor The node diagram is as follows :
The parameter setting is shown in the figure below :
The code is as follows :
Shader "Unlit/MatCap_Code"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {
}
_MatcapTex("MatcapTex",2D)="white"{
}// Gradient maps
_RampTex("RampTex",2D)="white"{
}
_MatcapAddTex("MatcapAddTex",2D)="white"{
}
_MatcapIntensity("Matcap Intensity",Float) = 1.0
_MatcapAddIntensity("MatcapAdd Intensity",Float)=1.0
}
SubShader
{
Tags {
"RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata// model data
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
float3 normal:NORMAL;
};
struct v2f// Custom data The output of the vertex , Slice input
{
float4 vertex : SV_POSITION;
float2 uv : TEXCOORD0;
float3 worldNormal : TEXCOORD1;
float3 worldPos:TEXCOORD2;
};
sampler2D _MainTex;
sampler2D _MatcapTex;
sampler2D _RampTex;
sampler2D _MatcapAddTex;
float4 _MainTex_ST;
float _MatcapIntensity;
float _MatcapAddIntensity;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
float3 worldNormal=mul(float4(v.normal,0.0),unity_WorldToObject);// It can be used for non proportional scaling without error .
//float3 worldNormal=UnityObjectToWorldNormal(v.normal);// Universal , Most of the time, the uplink code can be replaced
o.worldNormal=worldNormal;
o.worldPos=mul(unity_ObjectToWorld,v.vertex).xyz;
return o;
}
fixed4 frag (v2f i) : SV_Target
{
half3 worldNormal= i.worldNormal;
//material capture MainTex
half3 viewSpaceNormal=mul(UNITY_MATRIX_V,float4(worldNormal,0.0)).xyz; // Normal phasor in camera space
half2 matcapUV=(viewSpaceNormal.xy+float2(1.0,1.0))*0.5;
half4 matcapColor=tex2D(_MatcapTex,matcapUV) *_MatcapIntensity;
half4 diffuseColor = tex2D(_MainTex, i.uv);
//fresnel Gradient mapping
// Calculate the world space view direction
half3 worldViewDir=normalize(UnityWorldSpaceViewDir(i.worldPos));
half ndotv=saturate(dot(i.worldNormal,worldViewDir));
half fresnel=1.0-ndotv;
half2 rampUV=half2(fresnel,0.5);
half4 rampColor=tex2D(_RampTex,rampUV);
half4 matcapAddColor=tex2D(_MatcapAddTex,matcapUV)*_MatcapAddIntensity;
half4 combined_color= diffuseColor*matcapColor * rampColor+matcapAddColor;
return combined_color;
}
ENDCG
}
}
}
post-processing :
Add tone mapping to the camera , Make the color brighter .
Be careful : The corresponding level should also be added to the camera , Otherwise, it will not show
summary
Keep hungry , Stay foolish .
The only thing the world can believe is your efforts and the road you have traveled .
边栏推荐
- 百度智能云助力石嘴山市升级“互联网+养老服务”智慧康养新模式
- 视觉上位系统设计开发(halcon-winform)-2.全局变量设计
- The markdown file obtains the pictures of the network and stores them locally and modifies the URL
- The state does not change after the assignment of El switch
- Functional modules and application scenarios covered by the productization of user portraits
- 从 flask 服务端代码自动生成客户端代码 -- flask-native-stubs 库介绍
- mysql innodb 存储引擎的特性—行锁剖析
- Kubernetes带你从头到尾捋一遍
- Visual upper system design and development (Halcon WinForm) -5 camera
- Jvm-03-runtime data area PC, stack, local method stack
猜你喜欢
Jvm-04-runtime data area heap, method area
北京共有产权房出租新规实施的租赁案例
[attention mechanism] [first vit] Detr, end to end object detection with transformers the main components of the network are CNN and transformer
运维体系的构建
UnityShader——MaterialCapture材质捕捉效果 (翡翠斧头)
Jvm-02-class loading subsystem
视觉上位系统设计开发(halcon-winform)-3.图像控件
Kubernetes will show you from beginning to end
Redis lock Optimization Practice issued by gaobingfa
Construction of operation and maintenance system
随机推荐
redis单线程问题强制梳理门外汉扫盲
[transform] [practice] use pytoch's torch nn. Multiheadattention to realize self attention
函数栈帧的创建和销毁
视觉上位系统设计开发(halcon-winform)-6.节点与宫格
Detailed pointer advanced 1
do{}while()的妙用
Popular understanding of decision tree ID3
Popular understanding of ovo and ovr
找映射关系
Introduction, use and principle of synchronized
Summary of JVM knowledge points
Relationship between truncated random distribution and original distribution
需要知道的字符串函数
Didi off the shelf! Data security is national security
Kubernetes vous emmène du début à la fin
leetcode_ Power of Four
Puppet自动化运维排错案例
[attention mechanism] [first vit] Detr, end to end object detection with transformers the main components of the network are CNN and transformer
What is label encoding? How to distinguish and use one hot encoding and label encoding?
App global exception capture