Unity shader實現多光源漫反射以及陰影

2022-09-26 02:15:08 字數 1408 閱讀 1942

shader "unlit/mullight"

} subshader

//////

cgprogram

#pragma vertex vert

#pragma fragment frag

#include "unitycg.cginc"

#pragma target 3.0

//衰減與陰影的實現

#include "autolight.cginc"//////

//fwdadd:forwardbase的陰影顯示,在下面的forwardadd裡得用fwdadd; 必須結合fallback,兩者缺一不可

#pragma multi_compile_fwdadd_fullshadows//////

sampler2d _maintex;

float4 _m

//定義乙個燈光,名字為固定格式,會自動取場景中燈光

float4 _lightcolor0;//////

struct appdata

;struct v2f

;v2f vert (appdata v)

fixed4 frag (v2f i) : sv_target

endcg

}//多盞燈疊加

pass//////

//forwardadd :多燈混合//////

blend one one//////

cgprogram

#pragma vertex vert

#pragma fragment frag

#include "unitycg.cginc"

#pragma target 3.0

//衰減與陰影的實現

#include "autolight.cginc"//////

//fwdadd:forwardadd的陰影顯示,在上面的forwardbase裡得用fwdbase; 必須結合fallback,兩者缺一不可

#pragma multi_compile_fwdadd_fullshadows//////

sampler2d _maintex;

float4 _maintex_st;

//定義乙個燈光,名字為固定格式,會自動取場景中燈光

float4 _lightcolor0;//////

struct appdata

;struct v2f

;v2f vert (appdata v)

fixed4 frag (v2f i) : sv_target

endcg

} }//需要產生陰影

fallback "diffuse"

}本文標題: unity shader實現多光源漫反射以及陰影

本文位址: /ruanjian/csharp/324395.html

UnityShader 挺進體積光

原本是想找找體積霧的,無意中發現了 gpu gems 3上的一篇螢幕特效實現體積光散射的文章,實現了一波發現文章裡公式列的很高大上,結果具體實現卻出乎意料的簡單,只是通過畫素的螢幕位置和光源的螢幕位置計算光線方向,然後在乙個迴圈中沿光線方向將上乙個畫素的顏色衰減後疊加到下乙個畫素,具體可參考 gpu...

UnityShader例項03 邊緣光材質

邊緣光材質 邊緣光材質原理和xray材質相類似,shader 也就長得幾乎一樣了 shader 實現 vf版本 01 shader penglu rimlight vf rimcolor rimcolor color 0,1,1,1 rimpower rim power range 0.1,8.0 ...

Unity Shader 自定義Phong光照

今天我們來學習一下怎麼在unity裡實現自定義phong光照模型 什麼是phong光照?環境光和漫反射光比較容易計算,那鏡面高光要如何計算呢?鏡面高光其實可以通過利用入射光方向 即光照方向的反方向 和法線計算出反射光方向,然後再通過反射光方向和觀察視角方向計算出實際進入眼睛的光照強度,然後再做乙個光...