UnityShader玉石效果

效果:

代码:

Shader "MyShader/Jade"
{Properties{_DiffuseColor("漫反射颜色",color)=(1,1,1,1)_ThicknessMap("厚度图",2d)="white"{}_AddColor("叠加颜色",color)=(1,1,1,1)_CubeMap("环境贴图",Cube)="white"{}_RotateAngle("环境贴图旋转偏移",Range(0,360))=0_BackLightContrast("透光对比度",float)=1.0_BackLightScale("透光亮度",float)=1.0_Distort("扭曲程度",Range(0,1))=1}SubShader{Tags { "RenderType"="Opaque" }LOD 100Pass{Tags{"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_fwdbase#include "UnityCG.cginc"#include "AutoLight.cginc"#include "Lighting.cginc"float _BackLightContrast;float _Distort;float _BackLightScale;sampler2D _ThicknessMap;samplerCUBE _CubeMap;float4 _CubeMap_HDR;float _RotateAngle;float4 _DiffuseColor;float4 _AddColor;float3 Rotate(float3 v,float rotateAngle){float rad = rotateAngle*UNITY_PI/180.0;float2x2 rotateMul = float2x2(cos(rad),-sin(rad),sin(rad),cos(rad));float2 rotate_dir = mul(rotateMul,v.xz);return float3(v.x,rotate_dir.y,v.z);}struct appdata{float4 vertex : POSITION;float2 texcoord : TEXCOORD0;float3 normal : NORMAL;};struct v2f{float4 pos : SV_POSITION;float2 uv : TEXCOORD0;float3 normal_world : TEXCOORD1;float3 pos_world : TEXCOORD2;};v2f vert (appdata v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.uv = v.texcoord;o.normal_world =normalize( mul(v.normal,unity_WorldToObject).xyz);o.pos_world = mul(unity_ObjectToWorld,v.vertex).xyz;return o;}fixed4 frag (v2f i) : SV_Target{half3 normal_world = normalize(i.normal_world);half3 view_dir = normalize(_WorldSpaceCameraPos.xyz-i.pos_world);half3 light_dir = normalize(_WorldSpaceLightPos0.xyz);//漫反射half NdotL = saturate(dot(normal_world,light_dir));half3 diffuse_term = NdotL*_DiffuseColor*_LightColor0.xyz+_AddColor.xyz;//透射光half3 back_dir = -normalize(light_dir+normal_world*_Distort);   //透射方向half VdotBL = saturate(dot(view_dir,back_dir));half thickness = 1.0-tex2D(_ThicknessMap,i.uv).r;half back_light = saturate(pow(VdotBL,_BackLightContrast))*_BackLightScale;half3 backlight_term = back_light*_LightColor0.xyz*thickness;//环境光half3 hdr_reflect_dir = normalize(reflect(-view_dir,normal_world));half3 rotate_hdr_reflect_dir = Rotate(hdr_reflect_dir,_RotateAngle);half frensil = 1-saturate(dot(normal_world,view_dir));float4 hdr_color = texCUBE(_CubeMap,rotate_hdr_reflect_dir);half3 env_color = DecodeHDR(hdr_color,_CubeMap_HDR)*frensil;half3 final_color = backlight_term+env_color+diffuse_term;return fixed4(final_color,1.0);}ENDCG}Pass{Tags{"LightMode"="ForwardAdd"}Blend One OneCGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_fwdadd#include "UnityCG.cginc"#include "AutoLight.cginc"#include "Lighting.cginc"float _BackLightContrast;float _Distort;float _BackLightScale;sampler2D _ThicknessMap;float3 Rotate(float3 v,float rotateAngle){float rad = rotateAngle*UNITY_PI/180.0;float2x2 rotateMul = float2x2(cos(rad),-sin(rad),sin(rad),cos(rad));float2 rotate_dir = mul(rotateMul,v.xz);return float3(v.x,rotate_dir.y,v.z);}struct appdata{float4 vertex : POSITION;float2 texcoord : TEXCOORD0;float3 normal : NORMAL;};struct v2f{float4 pos : SV_POSITION;float2 uv : TEXCOORD0;float3 normal_world : TEXCOORD1;float3 pos_world : TEXCOORD2;LIGHTING_COORDS(3,4)};v2f vert (appdata v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.uv = v.texcoord;o.normal_world =normalize( mul(v.normal,unity_WorldToObject).xyz);o.pos_world = mul(unity_ObjectToWorld,v.vertex).xyz;TRANSFER_VERTEX_TO_FRAGMENT(o);return o;}fixed4 frag (v2f i) : SV_Target{half3 normal_world = normalize(i.normal_world);half3 view_dir = normalize(_WorldSpaceCameraPos.xyz-i.pos_world);half3 light_dir = normalize(_WorldSpaceLightPos0.xyz);//透射光half3 back_dir = -normalize(light_dir+normal_world*_Distort);   //透射方向half VdotBL = saturate(dot(view_dir,back_dir));half thickness = 1.0-tex2D(_ThicknessMap,i.uv).r;half back_light = saturate(pow(VdotBL,_BackLightContrast))*_BackLightScale;half3 backlight_term = back_light*_LightColor0.xyz*thickness;half3 atten = LIGHT_ATTENUATION(i);half3 final_color = backlight_term*atten;return fixed4(final_color,1.0);}ENDCG}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/468429.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

steam搬砖项目,“一个月赚8K+”真的假的?

在游戏中,搬砖党是永远都不能忽视的存在,随着游戏产业的不断发展,普通人也可以在steam搬砖项目中找到自己的生财之道。由于是低技术的重复工作,和现实的搬砖类似,所以才叫steam搬砖项目。 steam搬砖项目其实就和pdd无…

C++ 动态规划 线性DP 最短编辑距离

给定两个字符串 A 和 B ,现在要将 A 经过若干操作变为 B ,可进行的操作有: 删除–将字符串 A 中的某个字符删除。 插入–在字符串 A 的某个位置插入某个字符。 替换–将字符串 A 中的某个字符替换为另一个字符。 现在请你求出,将…

论文浅尝 | 在图上思考:基于知识图谱的深度且负责的大语言模型推理

笔记整理:孙硕硕,东南大学硕士,研究方向为自然语言处理 链接:https://arxiv.org/abs/2307.07697 1. 动机 本文的动机是大型语言模型在各种任务中取得了较大的进步,但它们往往难以完成复杂的推理,并且在知识…

代码随想录|day 16

Day 16 迎财神 坚持如此hard 玄之又玄,众妙之门 一、理论知识 回顾【深度】和【高度】的概念,现在主要还是写递归2) 初识【回溯】3)左叶子的明确定义:节点A的左孩子不为空,且左孩子的左右孩子都为空&am…

Pytorch的可视化

1 使用 wandb进行可视化训练过程 本文章将从wandb的安装、wandb的使用、demo的演示进行讲解。 1.1 如何安装wandb? wandb的安装比较简单,在终端中执行如下的命令即可: pip install wandb在安装完成之后,我们需要,去…

猫头虎分享已解决Bug || Error: [Vue warn]: Unknown custom element: <my-component> ‍✨

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

[C++]17:二叉树进阶

二叉树进阶 一.二叉搜索树:1.二叉搜索树的概念:2.二叉搜索树的实现---循环版本:1.二叉搜索树的基本结构:2.查找:3.插入:4.中序遍历:5.删除: 3.二叉搜索树的实现---递归版本&#xff…

Python数据科学:Scikit-Learn机器学习

4.1Scikit-Learn机器学习 Scikit-Learn使用的数据表示:二维网格数据表 实例1:通过Seaborn导入数据 def skLearn():scikit Learn基本介绍:return:import seaborn as sns#导入Iris数据集#注:一般网络访问不了iris sns.load_dataset(iris)ir…

ubuntu服务器部署gitlab docker并配置nginx反向代理https访问

拉取镜像 docker pull gitlab/gitlab-ce运行容器 docker run --detach \--publish 9080:80 --publish 9022:22 --publish 9443:443\--namegitlab \--restartalways \--volume /home/docker/gitlab/config:/etc/gitlab \--volume /home/docker/gitlab/logs:/var/log/gitlab \-…

Linux_文件系统

假定外部存储设备为磁盘,文件如果没有被使用,那么它静静躺在磁盘上,如果它被使用,则文件将被加载进内存中。故此,可以将文件分为内存文件和磁盘文件。 内存文件 磁盘文件 软、硬链接 一.内存文件 1.1 c语言的文件接口 …

C/C++内存管理:new、delete功能及原理实现

目录 一、C/C内存分布 二、C中内存管理方式 2.1new/delete操作内置类型 2.2 new和delete操作自定义类型 三、operator new与operator delete函数 四、new和delete的实现原理 4.1内置类型 4.2自定义类型 五、定位new 一、C/C内存分布 int globalVar 1; static int sta…

概率分布-离散型概率分布

更多AI技术入门知识与工具使用请看下面链接: https://student-api.iyincaishijiao.com/t/iNSVmUE8/