Shader 투영 효과
4837 단어 UnityShader
가상 현실 에서 가끔 투영 효 과 를 사용 할 수 있다. 예 를 들 어 조명 을 벽 에 투사 하고 인물 의 그림자, 화염 투영 효과 등 은 다음 과 같다.
와 이 파이 에 서 는 유 니 티 에 투 영 된 쉐 이 더 를 만 드 는 방법 에 대한 글 이 올 라 왔 다.여 기 는 단지 주 의 를 가 져 오 는 동시에 자신의 이 해 를 더 할 뿐이다.
wiki:https://en.wikibooks.org/wiki/Cg_Programming/Unity/Projectors
유 니 티 에서 투영 을 어떻게 사용 하 는 지 설명 하 겠 습 니 다.
1. 먼저 gameobject 에 Projector 구성 요 소 를 추가 합 니 다. 이 구성 요 소 는 다음 과 같은 몇 가지 작업 을 수행 합 니 다.
(1) 투영 물 체 를 생 성 하 는 투영 행렬Projector, 그리고 이 uniform 을 소재 공 에 넣 습 니 다.
(2) 투영 행렬 을 통 해 생 성 된 원뿔 체 와 선택 한 그림 층 을 통 해 투영 을 그 려 야 할 물 체 를 선별 합 니 다.
(3) 투영 을 그 려 야 할 물 체 를 우리 가 설정 한 재질 공 을 통 해 다시 한 번 렌 더 링 하고 우리 가 shader 에 설정 한 혼합 모드 를 통 해 최종 색상 을 생 성 합 니 다.
2. 투영 재질 공 으로 사용 되 는 shader 를 새로 만 듭 니 다. 이 shader 의 원 리 는 투영 이 필요 한 물체 의 정점 을 투영 물체 의 좌표 공간 으로 바 꾸 는 것 입 니 다.프로젝터 앞 에 있 는 픽 셀 을 다시 그립 니 다.
코드 는 다음 과 같 습 니 다:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Shader
"Unlit/Projector"
{
Properties {
_ShadowTex (
"Projected Image"
, 2D) =
"white"
{}
}
SubShader {
Pass {
Blend One One
// 1:1
ZWrite Off
//
Offset -1, -1
// zbuff ,
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
uniform sampler2D _ShadowTex;
// Projector
uniform float4x4 _Projector;
struct
vertexInput {
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct
vertexOutput {
float4 pos : SV_POSITION;
float4 posProj : TEXCOORD0;
//
};
vertexOutput vert(vertexInput input)
{
vertexOutput output;
output.posProj = mul(_Projector, input.vertex);
output.pos = mul(UNITY_MATRIX_MVP, input.vertex);
return
output;
}
float4 frag(vertexOutput input) : COLOR
{
if
(input.posProj.w > 0.0)
//
{
// 0.1
return
tex2D(_ShadowTex ,
input.posProj.xy / input.posProj.w) * 0.1;
// : return tex2Dproj(
// _ShadowTex, input.posProj);
}
else
//
{
return
float4(0.0, 0.0, 0.0, 0.0);
}
}
ENDCG
}
}
Fallback
"Projector/Light"
}
3. 마지막 으로 투영 에 사용 되 는 스티커 의 warp mode 를 clamp 로 수정 합 니 다. 그렇지 않 으 면 투 영 된 물 체 는 순환 합 니 다.
0.3 의 비율 후 혼합 효 과 는 다음 과 같다.
더 알 아 보기:
http://blog.sina.com.cn/s/blog_471132920101hhsd.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
UnityShader 는 이미지 중첩 을 사용 하여 운동 의 모호 함 을 실현 합 니 다.본 논문 의 사례 는 유 니 티 Shader 가 운동 의 모호 함 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다. 1.이 코드 는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.