Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- stateauthority
- 유니티 해상도
- nav거리
- 유니티
- unity 병합
- nav오브젝트사이거리
- unity git
- 깃허브 데스크탑 병합
- m590 수리
- 유니티 해상도 변경
- navigation
- m585
- 유니티 합치기
- Unity
- M590
- 오브젝트 깜빡임
- 유니티 해상도 설정
- unity merge
- networkobject.networkid
- 유니티 머지
- networkobject
- githubdesktopmerge
- 깃허브 데스크탑 합치기
- m585 수리
- 유니티 브랜치 merge
- networkbehaviourid
- NavMesh
- Github DeskTop Merge
- 몬스터
Archives
- Today
- Total
집게사장의 꿈
[Unity URP Shader]Rim 오브젝트 강조 본문
[출처] Unty Shader Training
https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d
struct VertexInput
{
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct VertexOutput
{
float4 vertex : SV_POSITION;
float3 normal : NORMAL;
//Vector 대신 사용 가능한 예약어
float3 WorldSpaceViewDirection : TEXCOORD0;
};
float _RimPower, _RimInten;
half4 _RimColor;
VertexOutput vert(VertexInput v)
{
VertexOutput o;
o.vertex = TransformObjectToHClip(v.vertex.xyz);
o.normal = TransformObjectToWorldNormal(v.normal);
//각 Vertex에서 카메라를 바라보는 방향
o.WorldSpaceViewDirection = normalize(_WorldSpaceCameraPos.xyz - TransformObjectToWorld(v.vertex.xyz));
return o;
}
half4 frag(VertexOutput i) : SV_Target
{
float3 light = _MainLightPosition.xyz;
float4 color = float4(0.5, 0.5, 0.5, 1);
half3 ambient = SampleSH(i.normal);
//카메라방향과 오브젝트 노말값을 내적한 크기
half face = saturate(dot(i.WorldSpaceViewDirection, i.normal));
//face가 소수점이면 _RimPower가 작을수록 1- face 에 가까운 값이 나온다.
//Rimpower가 강할 수록 더욱 강한 색이 나온다
half rim = 1.0 - ( pow(face, _RimPower));
//Lighting 적용
color.rgb *= saturate(dot(i.normal, light)) * _MainLightColor.rgb + ambient ;
//Rim 적용
color.rgb += rim * _RimInten * _RimColor;
return color;
}
# 월드 기준 오브젝트가 카메라를 향한 방향 벡터를 구한다.
o.WorldSpaceViewDirection = normalize(_WorldSpaceCameraPos.xyz - TransformObjectToWorld(v.vertex.xyz)); # 오브젝트의 normal 벡터와 카메라 벡터의 내적을 구한다 half face = saturate(dot(i.WorldSpaceViewDirection, i.normal));
# 오브젝트의 테투리 강조를 위한 것으로, 밝기를 정한다. half rim = 1.0 - ( pow(face, _RimPower));
#빛이 모두 적용된 컬러에 강조효과를 추가한다. color.rgb += rim * _RimInten * _RimColor;
|
인스펙터
결과
'그래픽' 카테고리의 다른 글
[Unity Shader Graph] Rim 아이템 강조효과 (0) | 2024.04.23 |
---|---|
[Unityy URP Shader] 축 정보 (0) | 2024.04.19 |
[Unity URP Shader] 툰 라이팅 기본 (0) | 2024.04.17 |
[Unity URP Shader] Direction Light (0) | 2024.04.17 |
[Unity URP Shader] 웨이브 (0) | 2024.04.17 |