Shader學習之能量場效果

2021-08-27 08:22:24 字數 1046 閱讀 5903

從效果上看,該球體是半透明的,邊緣部分泛藍光,球體表面與其他物體相交的部分會高亮,處在球體內部的其他物體形狀抖動變化。

首先,邊緣部分泛藍光,根據觀察方向繪製,使用unityworldspaceviewdir;

其次,相交部分高亮,計算場景內物體深度和球體深度差值,相交部分的差值為0,設定相機的depthtexturemode即可生成深度圖,在shader中使用_cameradepthtexture訪問深度圖,lineareyedepth,sample_depth_texture_proj,unity_proj_coord這三個方法和巨集的用法我也比較模糊,希望有柳暗花明的一天;

最後,形狀抖動變化,變化相機的grabtexure的uv,使用grabpass獲取grabtexure。

shader "chenjd/myforcefield"

_distortstrength("distortstrength", range(0,1)) = 0.2

_distorttimefactor("distorttimefactor", range(0,1)) = 0.2

} subshader

grabpass

pass

; struct v2f

;fixed4 _color;

float _power;

sampler2d _cameradepthtexture;

sampler2d _noisetexture;

float4 _noisetexture_st;

sampler2d _grabtemptex;

float4 _grabtemptex_st;

float _distorttimefactor;

float _distortstrength;

fixed4 frag (v2f i) : sv_target

endcg

} }}

學習

Shader學習整理

好久沒寫部落格了,研究了一段時間shader,整理一下 unity的shader包含三種,固定渲染管線,cg片段,su ce表面著色器,unity推薦su ce表面著色器,寫起來簡單,很多東西unity都做好了,實際中往往看具體需求而定,一般選cg片段和su ce表面著色器。然而不管怎麼說,基礎理論...

Shader學習筆記

direct和opengl兩種程式設計標準,前者是微軟提供的,一般用於windows平台,而後者是linux android ios等都共同支援的標準。由這兩種標準就衍生出來了集中gpu程式語言,諸如hlsl cg glsl等,在unity裡面,並不直接使用者三種語言去編寫,而是用自己自定義的sha...

shader 例子學習

struct su ceoutput background 最早被呼叫的渲染,用來渲染天空盒或者背景 geometry 這是預設值,用來渲染非透明物體 普通情況下,場景中的絕大多數物體應該是非透明的 alphatest 用來渲染經過alpha test的畫素,單獨為alphatest設定乙個queu...