유니티
-
이미지 흑백으로 만들기, Lerp 함수유니티/게임그래픽 2024. 2. 19. 21:05
fullforwardshadows는 그림자 관련 부분이다 이게 있으면 쉐이더를 사용한 오브젝트가 랜더링 상태일때 모든 라이트에서 그림자를 생성한다 이 구문을 지우게 되면 포인트나 스포트라이트에서는 그림자를 생성하지 않는다 흑백으로 바꾸는 방법은 매우 간단하다 출력을 (c.r + c.g + c.b) /3 으로 바꿔버리면 된다 이렇게 연산하면 c의 rgb값 평균이 나오게 되고 3으로 나누었으니 한자리 숫자로 나오게 된다 Lerp라는 단어 자체는 직선적인 비율로 값이 변환되는것을 의미하지만 지금은 복잡하게 알 필요없고 두 텍스쳐를 섞어주는 함수쯤으로만 이해하자 lerp(X, Y, s) 이게 기본형식으로 X와 Y는 같은 단위여야 하고 s는 float이다 이번엔 풀과 모래 텍스쳐를 lerp 함수를 이용해 합쳐보겠..
-
텍스쳐 입력받기유니티/게임그래픽 2024. 2. 19. 21:05
텍스쳐를 하나 입력받아 구에 적용시키는 스크립트를 짜보자 Shader "Custom/NewSurfaceShader" { // Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } CGPROGRAM #pragma surface surf Standard fullforwardshadows #pragma target 3.0 // sampler2D _MainTex; // struct Input { float2 uv_MainTex; }; // void surf (Input IN, inout SurfaceOutputStandard o) { fixed4 c = tex2D (_MainTex, IN.uv_..
-
Shader 응용유니티/게임그래픽 2024. 2. 19. 02:53
flaot3 (0.5,0.5,0.5) + flaot3 (0.5,0.5,0.5) = flaot3 (1,1,1) flaot3 (1,1,0) + flaot3 (1,0,) = flaot3 (2,1,0) 하지만 실제로 보이는 색상은 (1,1,0) 데이터에는 (2,1,0)으로 저장되어 있다 flaot3 (1,0,0) - flaot3 (0,0,1) = flaot3 (1,0,-1) 하지만 실제로 보이는 색상은 (1,0,0) 데이터는 마찬가지 flaot3 (0.5,0.5,0.5) * flaot3 (0.5,0.5,0.5) = flaot3 (0.25,0.25,0.25) float3(1,0,0) * float3(0,1,0) = float3(0,0,0) 연산은 같은 자릿수끼리만 가능하다(float-float, float3-fl..
-
Shader 기초지식 & 구에 색상 집어넣기유니티/게임그래픽 2024. 2. 18. 21:21
1.0, 1 둘다 가능 만약 RGB 세가지의 색을 구현한다면 float3, 여기에 알파까지 추가한다면 float4로 표현한다 flaot3 (0.5,0.5,0.5) + flaot3 (0.5,0.5,0.5) = flaot3 (1,1,1) flaot3 (1,1,0) + flaot3 (1,0,) = flaot3 (2,1,0) 하지만 실제로 보이는 색상은 (1,1,0) 데이터에는 (2,1,0)으로 저장되어 있다 flaot3 (1,0,0) - flaot3 (0,0,1) = flaot3 (1,0,-1) 하지만 실제로 보이는 색상은 (1,0,0) 데이터는 마찬가지 flaot3 (0.5,0.5,0.5) * flaot3 (0.5,0.5,0.5) = flaot3 (0.25,0.25,0.25) 1 - flaot3(1,0,0)..
-
Shader, Rendering Pipeline유니티/각종 용어 2024. 2. 18. 20:22
"화면에 출력할 픽셀의 위치와 색상을 계산하는 함수" "소프트웨어 명령의 집합으로 주로 그래픽 하드웨어의 렌더링 효과를 계산하는데 쓰임" "프로그래밍이 가능한 렌더링 파이프라인을 프로그래밍하는데 쓰임" "그래픽 데이터의 음영과 색상을 계산하여 다양한 재질을 표현하는 방법" Shader란 "Shade + er" 이다. 쉽게 말해 Shade의 역할을 해주는 함수라고 볼 수 있다 여기서 Shade란 '색의 농담, 색조, 명암 효과를 주는 행위'를 말한다 물론 이뿐만 아니라 블러, 입체광원, 왜곡, 크로마키, 모션 감지 등등 수많은 효과 제작을 포함한다. 기하학적으로 3D 장면을 구성하고 가상의 카메라를 설정한 뒤에 모니터에 2D 표현을 만들어내는 과정 렌더링 파이프라인이 이루어지는 과정은 크게 4가지가 있다 ..
-
직렬화를 이용하여 저장 객체 저장유니티/유니티 메인 2024. 2. 15. 18:02
우선 간단하게 json 형식으로 파일을 만들어준뒤 Resouces 폴더 안에 넣어준다 using Newtonsoft.Json; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; public class Dediablo : MonoBehaviour { void Start() { var asset = Resources.Load("Diablo"); string json = asset.text; Debug.Log(json); Diablo_Data data = JsonConvert.DeserializeObject(json); Debug.LogFormat("=> {0}, {1}, {2}, {3},..
-
정적 스크롤뷰유니티/UI 2024. 2. 15. 16:55
원래는 만드는 방법을 대충 아니 쓸 생각이 없었는데 이번에 한가지 오류가 나게 되면서 한번 짚고 넘어가기로 하자 문제의 오류는 일정 구간 이상 올리거나 내리면 스크롤이 되지 않아야하는데 제한없이 그대로 쭉 가버린다는것이다. 분명이 배운대로 했는데 어디가 문제인건지 알 수 없어 처음부터 다시 만들어보기로 했다 캔버스를 하나 만들어주고, 그 밑에 소스자료로 쓰일 이미지를 guied라는 이름으로 만들어준다 소스 이미지는 왼쪽으로 정렬해준다 그리고 Canvas Scaler에 있는 설정창에서 UI Scale Mode => Scale With Screen Size => 화면이 커질수록 UI요소도 커지도록 하기 Reference Resolution => 1920, 1080 => 해상도 직접 입력 Screen Matc..
-
비직렬화 오류유니티/오류&문제점 2024. 2. 14. 15:59
public class Test8Main2 : MonoBehaviour { void Start() { //TextAsset로드 var asset = Resources.Load("Weapon_Data"); //JSON문자열 가져오기 string json = asset.text; //출력 하기 Debug.Log(json); } } 분명 여기까지는 정상적으로 잘 작동이 된다 public class Test8Main2 : MonoBehaviour { void Start() { //TextAsset로드 var asset = Resources.Load("Weapon_Data"); //JSON문자열 가져오기 string json = asset.text; //출력 하기 Debug.Log(json); //역직렬화 Wea..