본문 바로가기

전체 글

(86)
[Unreal] C++ 클래스 생성 및 기초 프로퍼티 설명 h 파일 //#include "CoreMinimal.h" // 최소 기능만 선언 #include "EngineMinimal.h" #include "GameFramework/Actor.h" #include "Fountain.generated.h" UCLASS() class UNREAL_01_SETTING_API AFountain : public AActor { GENERATED_BODY() public: // Sets default values for this actor's properties AFountain(); protected: // Called when the game starts or when spawned virtual void BeginPlay() override; virtual void E..
5. UV가 흘러가도록 시간을 사용해보자 (Time.y) Shader "Custom/UV_TimeShader" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _FlowSpeed("FlowSpeed", float) = 1 } SubShader { Tags { "RenderType"="Opaque" } CGPROGRAM #pragma surface surf Standard sampler2D _MainTex; float _FlowSpeed; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutputStandard o) { fixed4 c = tex2D (_MainTex, float2(IN.uv_MainTex.x, IN.uv_Mai..
4. lerp (선형보간) 사용해서 텍스처 2장 섞기 풀 이미지와 땅 이미지 샘플입니다. 텍스처 2장을 인자로 받아온 후 lerp함수를 이용해서 첫번째 알파채널이 포함된 텍스처를 이용하면 텍스처 2장을 자연스럽게 섞을 수 있습니다. Shader "Custom/LerpEx" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _MainTex2 ("Albedo (RGB)", 2D) = "white" {} _lerpTest("lerp Value", Range(0,1)) = 0 } SubShader { Tags { "RenderType"="Opaque" } CGPROGRAM #pragma surface surf Standard sampler2D _MainTex; sampler2D _MainTex2; float _..
3. 이미지를 흑백으로 만들기 흑백이미지는 두 가지 속성을 가지고 있습니다. 1. RGB 모두 동일한 숫자로 이루어져있다. 2. RGB 각 요소에 따른 강도의 평균이다. 이 부분을 인지하고 아래와 같이 계산하면 이미지를 흑백으로 만들 수 있습니다. o.Albedo = (c.r + c.g + c.b) / 3; Shader "Custom/Gray" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } CGPROGRAM #pragma surface surf Standard sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, ..
2. 기초적인 서피스 셰이더 제작 Project -> Assets 우클릭 -> Create -> Shader -> Standard Surface Shader 를 생성하면 기본 셰이더 코드가 작성된 셰이더 파일이 생성됩니다. Shader "Custom/BasicSurfaceShader" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) = "white" {} _Glossiness ("Smoothness", Range(0,1)) = 0.5 _Metallic ("Metallic", Range(0,1)) = 0.0 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM // Physically ..
1. 렌더링 파이프라인 (렌더링 순서) 1. 오브젝트 데이터 받아오기 정점(버텍스) 데이터 받아오기 2. 정점(버텍스) 쉐이더 정점 좌표 변환 버텍스 로컬좌표계 -> 월드 변환 행렬 곱해줌 (월드 좌표계) -> 카메라 행렬 곱해줌 (카메라 뷰, 오쏘그래픽) -> 프로젝션 행렬 곱해줌 (퍼스펙티브) 3. 래스터라이져 3D 오브젝트를 모니터에 보이도록 픽셀 작업을 하는 과정 (3D -> 2D) 이 작업은 매 프레임 일어난다. 4. 픽셀 쉐이더, 프레그먼트 쉐이더 조명, 텍스쳐, 그림자, 각종 특수효과 연산
ARFoundation으로 ARCore 사용하기 - 이미지 트래킹 ARFoundation으로 ARCore 사용하기 - 이미지 트래킹 이미지를 찾아 이미지 위에 객체를 띄우는 작업을 해보겠습니다. AR Tracked Image Manager를 사용하면 쉽게 가능합니다. ARSessionOrigin 객체에 AR Tracked Image Manager를 컴퍼넌트로 등록합니다. 그리고 파일창(Project창)에 우클릭 -> Create -> XR -> ReferenceImageLibrary를 생성합니다. Add Image를 클릭 후 원하는 이미지를 등록합니다. 빌드 후 모바일에서 테스트를 해보면 잘 나옵니다. 그러면, 이미지 트래킹 할때 생성되는 이벤트를 사용해 보도록 하겠습니다. using System.Collections; using System.Collections.Ge..
ARFoundation으로 ARCore 사용하기 - ARPlaneManagerEvent ARFoundation으로 ARCore 사용하기 - ARPlaneManagerEvent ARFoundation에서 바닥면을 인식 할때 나오는 이벤트를 알아보겠습니다. AR Session Origin에 추가했던 ARPlaneManager를 이용해서 이벤트를 추가해 보겠습니다. 이벤트를 작성할 스크립트를 추가합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR.ARFoundation; using UnityEngine.XR.ARSubsystems; public class ARPlaneManagerEvent : MonoBehaviour { public GameObject spaw..