当前位置:网站首页>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
- Concurrency-02-visibility, atomicity, orderliness, volatile, CAS, atomic class, unsafe
- Matlab r2011b neural network toolbox precautions
- WinDbg分析dump文件
- socket. IO build distributed web push server
- Visual upper system design and development (Halcon WinForm) -5 camera
- [combinatorics] combinatorial identities (recursive combinatorial identities | sum of variable terms | simple combinatorial identities and | sum of variable terms | staggered sums of combinatorial ide
- 子类隐藏父类的同名函数
- 秒杀系统3-商品列表和商品详情
猜你喜欢

Reentrantlock usage and source code analysis

mysql innodb 存储引擎的特性—行锁剖析

秒殺系統3-商品列錶和商品詳情

Functional modules and application scenarios covered by the productization of user portraits
![[probably the most complete in Chinese] pushgateway entry notes](/img/5a/6dcb75f5d713ff513ad6842ff53cc3.png)
[probably the most complete in Chinese] pushgateway entry notes

What is embedding (encoding an object into a low dimensional dense vector), NN in pytorch Principle and application of embedding
![[transformer] Introduction - the original author of Harvard NLP presented the annotated transformer in the form of line by line implementation in early 2018](/img/2b/b23aeab584f89be6678c0fe059d4b6.png)
[transformer] Introduction - the original author of Harvard NLP presented the annotated transformer in the form of line by line implementation in early 2018

Introduction to redis master-slave, sentinel and cluster mode

Popular understanding of ovo and ovr

Halcon与Winform学习第二节
随机推荐
Tensorflow realizes verification code recognition (II)
Jvm-03-runtime data area PC, stack, local method stack
Digital image processing -- popular Canny edge detection
Jvm-04-runtime data area heap, method area
Concurrency-02-visibility, atomicity, orderliness, volatile, CAS, atomic class, unsafe
Redis主从、哨兵、集群模式介绍
基础SQL教程
Jvm-06-execution engine
Tensorflow realizes verification code recognition (I)
【日常训练】395. 至少有 K 个重复字符的最长子串
Nppexec get process return code
Can‘t connect to MySQL server on ‘localhost‘
Matplotlib drawing label cannot display Chinese problems
[combinatorial mathematics] binomial theorem and combinatorial identity (binomial theorem | three combinatorial identities | recursive formula 1 | recursive formula 2 | recursive formula 3 Pascal / Ya
Using Tengine to solve the session problem of load balancing
秒殺系統3-商品列錶和商品詳情
String functions that you need to know
需要知道的字符串函数
CString中使用百分号
Enable multi-threaded download of chrome and edge browsers