
Shader "AP1/L03/FlatCol" {Properties {//材质面板}SubShader {Tags {"RenderType"="Opaque" }Pass {Name "FORWARD"Tags {"LightMode"="ForwardBase" //Pass标签}CGPROGRAM //包围CG代码#pragma vertex vert //定义顶点和片元着色器#pragma fragment frag#include "inc"#pragma multi_compile_fwdbase_fullshadows#pragma target 3.0// 输入结构struct VertexInput {float4 vertex : POSITION; // 将模型的顶点信息输入进来};// 输出结构struct VertexOutput {float4 pos : SV_POSITION; // 由模型顶点信息换算而来的顶点屏幕位置};// 输入结构>>>顶点Shader>>>输出结构VertexOutput vert (VertexInput v) {VertexOutput o = (VertexOutput)0; // 新建一个输出结构o.pos = UnityObjectToClipPos( v.vertex ); //变换顶点信息并将其塞给输出结构 return o; // 将输出结构 输出}// 输出结构>>>像素float4 frag(VertexOutput i) : COLOR {return float4(0.0, 1.0, 0.0, 1.0);}ENDCG}}FallBack "Diffuse"
}
float4 frag(VertexOutput i) : COLOR{float3 nDir = i.nDirWS;float3 lDir = _;float nDotl = dot(nDir,lDir); //float lambert = max(0.0,nDotl); return float4(lambert,lambert,lambert,1.0); }
float lambert = nDotl*0.5+0.5;
思路: 以半兰伯特模型构造uv坐标采样Ramptex(Ramptex贴图:1. 3阶明度,过渡卡硬 2.暗部色相变化,少明度变化)
1. 玉石效果
2. 像素点效果
3. SSSLut效果
float3 rDir = reflect(-lDir,nDir);
float rDotv = dot(rDir,vDir);
float phong = pow(max(0.0,rDotv),_SpecularPow);
float3 finaRGB = _MainCol * lambert + phong;
float3 hDir = normalize( vDir + lDir );
float nDoth = dot(nDir,hDir);
float blinnphong = pow(max(0.0,nDoth),_SpecularPow);
shader forge:
代码:
Shader "Unlit/13_OldSchoolPlus"
{Properties{_BaseCol ("BaseCol",color) = (1.0, 1.0, 1.0, 1.0)_SpecularPow ("SpecularPow", range(1,90)) = 30_LightCol ("LightCol",color) = (1.0, 1.0, 1.0, 1.0)_Occlusion ("Occlusion", 2D) = "white" {}_EnvUpCol ("EnvUpCol",color) = (1.0, 1.0, 1.0, 1.0)_EnvSideCol ("EnvSideCol",color) = (1.0, 1.0, 1.0, 1.0)_EnvDownCol ("EnvDownCol",color) = (1.0, 1.0, 1.0, 1.0)_EnvColPow ("EnvColPow", range(0,1)) = 0.2}SubShader{Tags { "LightMode"="ForwardBase" }Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag// make fog work#pragma multi_compile_fog#include "inc"//投影头文件#include "inc"#include "inc"//输入参数uniform float3 _BaseCol;uniform float _SpecularPow;uniform float _EnvColPow;uniform float3 _LightCol;uniform float3 _EnvUpCol;uniform float3 _EnvSideCol;uniform float3 _EnvDownCol;uniform sampler2D _Occlusion;//输入结构struct VertexInput{float4 vertex : POSITION;float4 normal : NORMAL;float2 texcoord0: TEXCOORD0; //将模型uv信息输入进0通道};//输出结构struct VertexOutput{float4 pos : SV_POSITION;float2 uv0 : TEXCOORD0;float4 posWorld : TEXCOORD1;float3 normalDir : TEXCOORD2;//追加uv信息用于像素shader采样贴图LIGHTING_COORDS(3,4)//投影
本文发布于:2024-03-16 03:11:40,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/1717134478272999.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
| 留言与评论(共有 0 条评论) |