반응형

Unity/그래픽스프로그래밍 27

Unity PROCEDURAL TERRAIN _ 여러 개 점,면 만들어서 노이즈 맵으로 지형 만들기

.☝ PROCEDURAL은 절차적인 의미로써 모델링 또는 fx에서 많이 쓰인다. 프로시졀의 장점은 예측이 가능하고, 특정 부분에서 런타임중 접근이 용이하다. 일반적으로 모델러가 만들어준 모델링은 그 과정을 알 수가 어렵기 때문에 항상 결과물만 이용하게 된다. 하지만, 프로시졀 모델링은 그 과정을 알 수 있기 때문에 수정이 용이하다 대표적으로 프로시졀 모델링은 후디니에서 많이 사용한다. (노드 기반) ----- 저번에 이어서 면을 만들어 줄 것인데 이번에는 점을 가지고 있는 플랜한 면을 만들어 줄 것이다. 기본적인 오브젝트를 하나 만들어주고, 메시 필터, 메시 렌더러, 만들어준 스크립터를 달아준다. using UnityEngine; public class MeshGenerate : MonoBehaviour..

Unity Mesh Create Basic _ 유니티 면 만들기 기본

☝ 개요 - 3D Tool 에서 Mesh는 기본적으로 Vertex (점)으로 이루워졌음 그래서 런타임 중이나 Procedual Modeling를 하려면 기본적으로 점을 다룰줄 알아야한다. 그렇기에 면 하나를 만드는 과정을 정리하려고 한다. using UnityEngine; [RequireComponent(typeof(MeshFilter))] public class MeshGeneration : MonoBehaviour { Mesh mesh; Vector3[] vertices; int[] triangels; void Start() { mesh = new Mesh(); GetComponent().mesh = mesh; CreateShape(); UpdateMesh(); } void CreateShape() ..

210715_ 그래픽스 프로그래밍(복습 및 시험)

먼저 필요한 어셋들을 불러와준다. 두개 와 스카이 박스도 https://assetstore.unity.com/packages/2d/textures-materials/sky/free-hdr-sky-61217 Free HDR Sky | 2D 하늘 | Unity Asset Store Elevate your workflow with the Free HDR Sky asset from ProAssets. Browse more 2D 텍스처 및 소재 on the Unity Asset Store. assetstore.unity.com 디퓨즈 Warping 할 이미지도 유니티에 넣어준다. 이거 사용할것 ---- 먼저 불 부터 만들 것이다. 유니티에 메터리얼, 세이더 폴더 하나 씩 만들어주기 파이어 매터리얼, 파이어 세이더..

0510_ 알파 테스트와 컷 아웃

먼저 그리는 순서를 z - buffer 라고한다. 오버드로우, 뒤 쪽에 있는 걸 먼저그리는 것 z 버퍼는 카메라에 무얼 먼저 그릴지를 선택하는 것 알파블랜딩 오브젝트들을 그리는 순서가 정해져 있지 않다. 오브젝트들이 그려질떄마다 z 버퍼를 참고해서 앞뒤 판정을 한다. 그리고 그려질 픽셀과 안그려질 픽셀을 결정한다. Z버퍼링 이미지 심도 좌표 관리방식이며, 어떤 물체가 그려질 떄 만들어진 픽셀의 깊이 정보는 버퍼에 저장된다. 1.불투명이 먼저 그린다. 2.반투명을 나중에 그린다. 3.반투명인 물체들은 멀리있는 것부터 가까운것까지 차례대로 풀 이미지한장받는거 만들어서 풀 넣고 Tags { "RenderType"="Transparent" "Queue" = "Transparent"} alpha:fade 해서 풀..

0507 _ 큐브맵 만들어서, 물체에 월드 노멀, 리플렉션 적용시기키

큐브맵 // HDRI 네모난 큐브 형식이라고 되어있다고 보면됌 Environment 중 하나 ---- 텍스쳐 한 장을 받는 쉐이더 스크립터를 만들어준다. 램버트 라이팅 세팅으로 Shader "Custom/Test" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Lambert sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D (_MainTe..

0507_Diffuse Warping 만들어보기

"Warped diffuse" 는 팀포2에서 만든것 빛 공식으로 쓰이는 노멀과 라이트 벡터의 내적을 UV 사용한다. ----- 텍스쳐 한장을 받는 스크립터를 만들어준다. 그리고 Warp 이라는 커스텀 라이팅을 만드어준다. Shader "Custom/Test" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf _Warp noambient sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutp..

0507 _ 툰쉐이더 _ 1pass로 음영 표시하기

새로 만들어서 텍스쳐 한장을 받는 스크립터를 만들어준다. 커스텀 라이팅을 해줍니다 . Shader "Custom/Test" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf _Toon noambient #pragma target 3.0 sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D (_MainTex, IN.uv_MainTex); o.Alb..

0507 _ 툰쉐이더 _ 음영을 계단식 -> 2pass 로 외곽 만들어준다.

텍스쳐 한 장을 받는 쉐이더 스크립터를 만들어준다. Toon 으로 커스텀 라이트를 만들어준다. Shader "Custom/Test" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Toon noambient #pragma target 3.0 sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D (_MainTex, IN.uv_MainTex); o..

0507_ 외곽선 만들어보기

이미지한장을 받는 스크립터를 먼저 만들고 시작한다. 기본 램버트를 받는 스크립터로 ---- 이번에는 CG를 두 번 렌더링 할 것이다. 이것을 Two Pass 라고한다. 기본적으로 밑에 이렇게 넣고 채우면 된다. Shader "Custom/Test" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Lambert #pragma target 3.0 sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout Surfac..

0507 _ Lim 라이트를 커스텀 라이트로 옮기기

기존에 했던(블린퐁에서 스펙큘러 만들기)걸 재사용해서 LightingTest 부분만 수정할 것이다. --- 디퓨즈 컬러 만들기 //램버트 적용 float3 diffColor; float ndotl = dot(s.Normal, lightDir); diffColor = ndotl * s.Albedo * _LightColor0.rgb * atten; 디퓨즈 (빛 정보 감쇠까지 가지는 컬러를 만들어준다.) 스펙큘러 적용된 컬러 만들기 //스펙큘러 적용 float3 specColor; float3 H = normalize(viewDir + lightDir); float spec = dot(H,s.Normal); specColor = spec * _SpecCol.rgb; 림 컬러 적용 //Rim 적용 float3 ..

반응형