庄懂的技术美术入门笔记

阅读: 评论:0

庄懂的技术美术入门笔记

庄懂的技术美术入门笔记

最简shader模板

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"
}

各种向量

  • nDir:normal   法线方向,点乘操作时简称n;
  • lDir: light        光照方向,点乘操作时简称l;
  • vDir:view       观察方向,点乘操作时简称v;
  • rDir:reflect     光反射方向,点乘操作时简称r;
  • hDir:half        半角方向(即lDir和vDir的中间角方向),点乘操作时简称h;
  • OS:ObjectSpace                      物体空间,本地空间
  • WS:WorldSpace                      世界空间;
  • VS: ViewSpace                        观察空间; 
  • CS:HomogenousClipSpace     齐次剪裁空间;
  • TS:TangentSpace                    切线空间; 
  • TXS:TextureSpace                   纹理空间;

光照构成

光照模型

一、Lambert 和 Half Lambert 漫反射光照模型 

  •    Lambert:
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);  }
  •  Half Lambert:
float lambert = nDotl*0.5+0.5;
Lambert
Half Lambert
Ramptex作业

  • 作业:

        思路: 以半兰伯特模型构造uv坐标采样Ramptex(Ramptex贴图:1. 3阶明度,过渡卡硬 2.暗部色相变化,少明度变化)

  • 点评案例:

        1. 玉石效果

        2. 像素点效果

        3. SSSLut效果

二、Phong/Blinn-Phong高光模型

  • Phong:
float3 rDir = reflect(-lDir,nDir);
float rDotv = dot(rDir,vDir);            
float phong = pow(max(0.0,rDotv),_SpecularPow);
float3 finaRGB = _MainCol * lambert + phong;
  • Blinn-Phong:
float3 hDir = normalize( vDir + lDir );
float nDoth = dot(nDir,hDir);              
float blinnphong = pow(max(0.0,nDoth),_SpecularPow);
Phong
Blinn-Phong

三、OldSchoolPlus

  • Lambert + Phong + Shadow + 3ColAmbient + AO (忽略镜面反射cubemap)

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 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23