当前位置:网站首页>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 .
边栏推荐
- App global exception capture
- Jvm-06-execution engine
- Visual upper system design and development (Halcon WinForm) -2 Global variable design
- UnityShader——MaterialCapture材质捕捉效果 (翡翠斧头)
- VC下Unicode和ANSI互转,CStringW和std::string互转
- Concurrency-02-visibility, atomicity, orderliness, volatile, CAS, atomic class, unsafe
- Puppet automatic operation and maintenance troubleshooting cases
- Idea does not specify an output path for the module
- Detailed pointer advanced 2
- Creation and destruction of function stack frames
猜你喜欢
What is machine reading comprehension? What are the applications? Finally someone made it clear
视觉上位系统设计开发(halcon-winform)-1.流程节点设计
MySQL reports an error: [error] mysqld: file '/ mysql-bin. 010228‘ not found (Errcode: 2 “No such file or directory“)
How to use annotations such as @notnull to verify and handle global exceptions
Redis主从、哨兵、集群模式介绍
The state does not change after the assignment of El switch
北京共有产权房出租新规实施的租赁案例
mysql innodb 存储引擎的特性—行锁剖析
What are the composite types of Blackhorse Clickhouse, an OLAP database recognized in the industry
WinDbg分析dump文件
随机推荐
视觉上位系统设计开发(halcon-winform)-3.图像控件
[transform] [practice] use pytoch's torch nn. Multiheadattention to realize self attention
Markdown file titles are all reduced by one level
Puppet自动化运维排错案例
The state does not change after the assignment of El switch
Tensorflow realizes verification code recognition (I)
Seckill system 3- product list and product details
CString在多线程中的问题
Qt常用语句备忘
win32创建窗口及按钮(轻量级)
详解指针进阶2
Jvm-03-runtime data area PC, stack, local method stack
el-switch 赋值后状态不变化
Summary of concurrent full knowledge points
Popular understanding of linear regression (I)
XWiki Installation Tips
Visual upper system design and development (Halcon WinForm) -5 camera
Kubernetes带你从头到尾捋一遍
Kubernetes帶你從頭到尾捋一遍
Atlas atlas torque gun USB communication tutorial based on mtcom