게임 그래픽 프로그래밍/개인공부

게임 그래픽 프로그래밍/개인공부

서피스 쉐이더 - 외부의 입력값 출력

쉐이더 외부 입력값 출력 1. 프로퍼티, 전역변수 선언 및 값 할당 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 // 추가된 프로퍼티 _TestColor ("Test Color" , Color) = (1,1,1,1) } 테스트용 프로퍼티 선언 시 초기화 값은 4자리 숫자 = float4 타입의 크기 = float4 Properties 블록 안에 선언. 프로퍼티 초기화 후 동일한 이름과 타입을 가진 전역 변수를 함수 외부에 선언 CGPR..

게임 그래픽 프로그래밍/개인공부

서피스 쉐이더 - 변수 활용

쉐이더에서의 변수 변수명시작은 영어, 숫자로 시작하면 안된다.(첫글자 외에는 ok). 변수명은 공백, 특수문자, 한글사용 불가.('_' 예외) 변수명 중복 허용 안됨. 대소문자를 구별하니 변수명 선언시 주의. 1. 변수 선언 void surf (Input IN, inout SurfaceOutputStandard o) { // 변수선언 //float4 test; // 변수 초기화 float4 test = float4(1,0,0,1); // 변수 할당 // float4 이지만 r,g,b float3 값만 적용 o.Albedo = test; // float4 변수의 float3 값만을 할당 o.Albedo = test.rgb; } 2. RGB 순서 변경 선언한 변수의 부분값을 바꾼뒤 할당해주는 것이 가능하다...

게임 그래픽 프로그래밍/개인공부

서피스 쉐이더 - 쉐이더 구조 및색상 출력

쉐이더 구조 1. CGPROGRAM영역 CGPROGRAM ~ ENDCG 부분은 유니티 자체 스크립트가 아닌 CG언어가 사용된다. 전처리 영역 (스니핏 snipet) 이라고도 부른다 쉐이더의 조명계산 설정, 기타 세부적인 분기를 정해주는 부분 인풋 구조체 Input Structure 구조체로 엔진으로 부터 받아와야 할 데이터 들이 들어간다. Surf 함수 함수 영역으로 색상이나 이미지가 출력되는 부분이다. 2. 색상 출력 출력은 Surf 함수 내에 작성 함수에 대한 세부 설명은 이미지를 참조 인자로 받는 SurfaceOutputStandard 구조체의 경우 쉐이더 파일 내부에서 확인이 불가하며 유니티 내부 include 파일에 정의되어있다 타입중 Half의 경우 float의 절반크기이며 그보다 더 작은 f..

게임 그래픽 프로그래밍/개인공부

서피스 쉐이더 - 쉐이더 Properties

쉐이더 이름 및 트리구조 변경 1. 쉐이더의 최 상단 시작 부분을 변경하는 것으로 쉐이더 트리 구조 및 이름 변경이 가능 Alan/TestShader 이름 변경 후 저장그 외에도 더 깊은 트리구조로 생성도 가능하다. (예 : Alan/Test/TestShader)다만 이렇게 수정하여도 스크립트와 마찬가지로 유니티 Project 창에서의 명칭은 변경되지 않으니 주의 쉐이더 ProPerties 1. 쉐이더의 Properties 영역 쉐이더의 프로퍼티 영역에서는 세미콜론(;)은 사용되지 않는다. 다만 다음에 나올 SubShader 영역에서는 사용되니 주의 2. 쉐이더 Propertie 추가 및 특징 특징 쉐이더 프로퍼티들은 C# 스크립트의 프로퍼티 혹은 전역변수들과 동일하게 초기화도 가능하다. C# 스크립트와..

게임 그래픽 프로그래밍/개인공부

서피스 쉐이더 - 마테리얼, 쉐이더 생성 및 오브젝트 적용방법

오브젝트 마테리얼 및 쉐이더 적용 1. 3D 오브젝트 생성 2. Project 창 Assets 폴더 하위에 쉐이더 생성 3. 쉐이더 명 변경4. 마테리얼 생성5. 마테리얼 쉐이더 적용여기서 새로 생성한 쉐이더를 마테리얼로 끌어다놓으면 적용된다. (혹은 인스펙터 창의 드롭다운 메뉴에서 Custom 하위 항목에서 내가 만든 쉐이더를 확인하여 적용)6. 오브젝트 마테리얼 적용간단하게 마테리얼을 적용하고싶은 오브젝트를 선택한 후 메쉬 렌더러 컴포넌트의 Material 프로퍼티에 드래그 앤 드롭으로 적용 가능하다. 다음은 쉐이더 편집 관련 정리

게임 그래픽 프로그래밍/개인공부

그래픽 쉐이더 - 렌더링 파이프라인

쉐이더란? '컴퓨터 그래픽에서 최종적으로 화면에 출력하는 픽셀의 "색" 을 정해주는 함수' 한국말로 직역하면 음영이 된다. 좀 더 아티스트적인 면에서 정의하면 '그래픽 데이터의 색상을 계산하여 다양한 재질을 표현하는 방법' 그래픽 아티스트 친화적 용어로는 Material 이 있다. 역사적인 측면에서의 Shader시작은 Pixar의 랜더링 엔진 렌더맨(Renderman) 이지만 본격적인 실시간 게임용 쉐이더의 시작은 다이렉트X8 버전부터이다 렌더링 파이프라인의 일반적인 과정 일반적인 렌더링 파이프라인의 과정 오브젝트 데이터 받아오기 정점 (버텍스 : Vertex) 쉐이더 래스터라이저(Rasterizer) 픽셀쉐이더(Pixel Shader) / 프레그먼트 쉐이더(Fragment Shader) 1단계 : 오브..

게임 그래픽 프로그래밍/개인공부

유니티 렌더링 파이프라인 버전(URP 와 HDRP)

유니티 렌더링 파이프라인의 버전중 URP 와 HDRP에 대해 정리 URP 유니버설 렌더링 파이프라인 (Universal Rendering Pipeline - URP)이란? 유니버설 렌더 파이프라인(URP)은 Unity에서 제작한 사전 빌드된 스크립터블 렌더 파이프라인. Unity 2019.3 버전부터 도입된 경량화된 렌더링 파이프라인. 프로젝트 생성시 기본적으로 URP 파이프라인을 기반으로 프로젝트 설정. 주로 모바일 기기나 저사양 PC 등에서 높은 성능을 제공하도록 최적화. Shader Graph와 함께 사용하기 쉬워 시각적 효과를 구현하기에 유용. 2D 및 3D 프로젝트에 모두 적합하며, 2D 스프라이트 렌더링도 높은 품질과 성능을 제공. Post-Processing Stack을 사용하여 추가적인 이..

게임 그래픽 프로그래밍/개인공부

유니티 렌더 파이프라인 (Render Pipeline)

https://docs.unity3d.com/kr/2021.1/Manual/render-pipelines.html 렌더 파이프라인 - Unity 매뉴얼 렌더 파이프라인은 씬의 콘텐츠를 가져와서 화면에 표시하는 일련의 작업을 수행합니다. docs.unity3d.com 유니티 렌더 파이프라인이란? 씬의 콘텐츠를 가져와서 화면에 표시하는 일련의 작업을 수행하는 기능. 수행하는 작업의 종류 컬링 렌더링 포스트 프로세싱 종류 빌트인 렌더 파이프라인 유니버셜 렌더 파이프라인(URP) 고해상도 렌더 파이프라인(HDRP) 유니티의 스크립터블 렌더 파이프라인 API를 활용한 커스텀 렌더 파이프라인 렌더링 파이프라인 애플리케이션(Aplication) => 지오메트리(Giometry) => 래스터라이저(Rasterizer)..

Bueong_E
'게임 그래픽 프로그래밍/개인공부' 카테고리의 글 목록