Shader "Custom/Cg shader with reflection map"
{
Properties
{
_Cube("Reflection Map",Cube) = ""{}
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
uniform samplerCUBE _Cube;
struct vertexInput
{
float4 vertex:POSITION;
float3 normal:NORMAL;
};
struct vertexOutput
{
float4 pos:SV_POSITION;
float3 normalDir:TEXCOORD0 ;
float3 viewDir:TEXCOORD1 ;
};
vertexOutput vert(vertexInput input)
{
vertexOutput output;
float4x4 modelMatrix = _Object2World ;
float4x4 modelMatrixInverse = _World2Object;
output.viewDir = mul(modelMatrix,input.vertex).xyz - _WorldSpaceCameraPos;
output.normalDir = normalize(mul(float4(input.normal,0.0),modelMatrixInverse).xyz);
output.pos = mul(UNITY_MATRIX_MVP,input.vertex);
return output;
}
float4 frag(vertexOutput input):COLOR
{
float3 reflected = reflect(input.viewDir,normalize(input.normalDir));
return texCUBE(_Cube,reflected);
}
ENDCG
}
}
}
Cg shader with reflection map
最新推荐文章于 2022-03-19 21:16:58 发布