Shader之 角色實時陰影

2021-09-09 07:04:05 字數 941 閱讀 7953

移動段的實時陰影,之前的實現方案是,讓角色受光,讓接受陰影的地表受光,達到乙個實時陰影的效果。然後就發現美術的地表做得比較複雜 面數跟材質球數量都不少,一旦受光,dc跟面數都增加的比較明顯,對效率影響比較高。

於是有了新的方案,地表上本來就會做一層行走網格,面數比較少,而且整個場景也就一到兩個模型,乾脆就用行走網格來接受陰影。讓產生陰影的地方半透疊加到地表,沒有陰影的地方全透明,對效率影響相對比較低。

效果如下:

shader如下:

shader "scenes/shadowcollision"   

blend srcalpha oneminussrcalpha

zwrite off

pass

cgprogram

#pragma vertex vert

#pragma fragment frag

#define unity_pass_forwardbase

#include "unitycg.cginc"

#include "autolight.cginc"

#pragma multi_compile_fwdbase_fullshadows

fixed4 _lightcolor0;

struct vertexinput ;

struct v2f ;

v2f vert (vertexinput v)

fixed4 frag(v2f i) : color

endcg

} }

fallback "transparent/cutout/vertexlit"

}

Laya3D 自定義shader 實時陰影

laya自帶的預設材質 blinnphongmaterial 是支援實時陰影的,只需要將directional light 的陰影開啟 meshrender 的receiveshadow 設定為 true 就能簡單的在材質上投射陰影了。但是顯然基礎材質 blinnphong是不夠用的,當需要自定義材...

Shader 點光源和自陰影

本教程基於教程4 法線對映。在實現乙個點光源前你無需知道法線對映,所以如果你只想知道如何實現乙個點光源,可以暫時無需理解教程4的知識。這個教程只解釋什麼是點光源以及如何實現它,你可以在本教程使用的演算法之後新增法線對映或其他你需要的shader。只要你理解了教程1,2,3,這個教程不是很難。點光源 ...

shader之 多光源漫反射以及陰影

shader unlit mullight subshader cgprogram pragma vertex vert pragma fragment frag include unitycg.cginc pragma target 3.0 衰減與陰影的實現 include autolight.c...