본문 바로가기

shaer

(8)
Unity Shader lab 서피스 쉐이더 인풋 구조 서피스 쉐이더 인풋 구조 입력 구조체 Input에는 일반적으로 쉐이더에 의해 요구되는 텍스처 좌표가 있습니다. 텍스처 좌표의 이름은 uv 뒤에 텍스처 이름이 오는 형태로 해야 합니다(두번째 텍스처 좌표 세트를 사용하려면 uv2로 시작)다음 값을 입력 구조에 입력할 수 있습니다.float3 viewDir - 뷰 방향을 포함합니다. 시차 효과, 림 라이팅 등의 계산에 사용됩니다. *float4 withCOLOR 의미 - 보간된 정점 당 색상을 포함합니다.float4 screenPos - 반사 효과의 스크린스페이스 위치 또는 스크린스페이스 효과를 포함합니다.float3 worldPos - 월드 공간상의 위치를 ​​포함합니다.float3 worldRefl - Surface Shaders이 o.Normal에 기입..
(예제 / 설명) Spherical Mask Shader Part.2 [Step] 1. Part. 1에서 작업된 grayscale의 자료형을 half로 변경, /3으로 한것을 *0.333으로 바꿔줌 (속도 향상)2. c_g값을 grayscale로 변경하는데, half에서 fixed3로 캐스팅(형변환)3. inspector에서 색이 변하는 위치의 중심점을 잡아줄 vector _Position Properties를 생성해줌 (World기준이 될 것임)4. 색이 변할 영역의 크기를 정할 Range(0,100) _Radius Properties를 만들어줌5. 색이 변하는 테두리의 맺음의 정도를 지정해줄 Range(0,100) _Softness Properties를 만들어줌6. SubShader에 Properties를 받아줄 변수를 만듬7. _Position은 vector이기 때문..
(예제 / 설명) Spherical Mask Shader Part.1 [Step] 1. 새로운 Standard Surface Shader를 생성2. 셰이더 이름을 변경3. 머트리얼 생성4. 큐브 게임오브젝트를 생성5. 큐브 게임 오브젝트에 머트리얼 적용6. 적용된 머트리얼에 셰이더 적용 7. float grayscale = (c.r + c.g + c.b) / 3; // 회색은 RGB의 평균값으로 한다.8. fixed3 c_g = (grayscale, grayscale, grayscale); // fixed3(color) 값은 산출된 grayscale 값을 각각의 요소에 적용한다.9. o.Albedo = c_g; // 객체의 컬러 값을 위에 적용된 값으로 대체 한다.
ShaderLab 구문 (Unity) ShaderLab 구문Unity 의 모든 셰이더 파일은 “ShaderLab”이라는 선언형 언어로 작성되어 있습니다. 이 파일에서 중첩 중괄호 구문은 셰이더를 서술하는 다양한 요소를 선언합니다. 예를 들어, 어떤 셰이더 프로퍼티가 머티리얼 인스펙터에 표시되어야 하는지, 어떤 종류의 하드웨어 폴백을 할지, 어떤 종류의 블렌딩 모드를 사용할지 등을 선언합니다. 그리고 실제 “셰이더 코드”는 동일 셰이더 파일에서 CGPROGRAM 스니핏으로 작성되어 있습니다. 표면 셰이더와 버텍스 및 프래그먼트 셰이더를 참조하십시오.이 페이지와 하위 페이지에서는 중첩 중괄호 “ShaderLab” 구문을 기술합니다. CGPROGRAM 스니핏은 표준 HLSL/Cg 셰이딩 언어로 작성되어 있습니다. 각 문서 페이지를 참조하십시오.S..
Unity3D Shader 방식 Fixed Function Program키워드로 구성정점기반 라이팅 (가볍고 빠르다)오래된 하드웨어와 호환Fixed Function Program 예 Vertex / Fragment Program셰이더 모델 : 2.0 / 3.0셰이더 언어 : Cg, GLSL셰이더 : 버텍스, 픽셀 셰이더CGIncludes 디렉터리셰이더 관련 다양한 매크로 및 함수 제공Cg To GLSL 자동 변환Vertex / Fragment Shader 예 Surface Shaderexpand source Vertex Lit Rendering PathForward Rendering PathDeferred Lighting Render PathFixed Fundtion ProgramO Vertex Fragment Program O Sur..
HLSL 내장 함수 (자료형) ※ 용어는 사전 링크를 포함하고 있습니다. 함수 내용 sample2D 2D Texture sample3D 3D Texutre float4 32 bit : Vector에 주로 쓰임 half4 16 bit : Color값에 주로 쓰임 (모바일 지원) fixed4 8 bit : Color 값에 주로 쓰임 (모바일 지원 안함) tex2D(s, t) 텍스쳐 샘플링에 사용하는 HLSL 함수. 첫 번째 인자에서 두 번째 인자 좌표에 있는 텍셀을 구하는 함수. s는 샘플러 또는 sampler2D 개체 (Texture), t는 2D 텍스처 좌표 (UV) tex2D(s, t, ddx, ddy) 2D의 투영 텍스처 참조 ddx(x), ddy(x) 스크린공간의 x, y 좌표에 대한 x, y의 편미분을 리턴한다 reflect(..
스크립트에서 쉐이더에 변수 전달하기. .shader Shader "MyShader"{Properties{....} SubShader{ int A; // 전달받을 변수 float B; // 전달받을 변수 sampler2D C; // 전달받을 변수 sampler3D D; // 전달받을 변수} ※ SubShader 에다 변수를 선언하고.... using System.Collections;using System.Collections.Generic;using UnityEngine; public class MyClass: MonoBehaviour { private Material myMaterial; // 쉐이더에 접근할 머트리얼private myMaterial= new Material(MyShader); // MyShader를 적용 // 넘길 데이터..
#1 어찌하다보니 쉐이더도 해야 하는 상황이 왔넹.. 그렇다고 기존에도 잘한건 아니지만...일단 자료를 긁어 모으는 데로 업데이트 할 예정인지라 정리가 잘 안될수도 있음...ㅇㅇ 그렇다구