분류 전체보기

    SetPixel 대신 Compute Shader 사용하기

    게임에 물감이 튀는 효과가 있다 페인트 효과 Ground에 물감이 칠해지는 효과이고 동적으로 보이기 위해 Texture2D.SetPixel을 통해 매번 다른 크기, 개수만큼 원형을 그려주고 있었다. 작은 액체의 이펙트는 호출 횟수도 적고 크기도 작아서 그나마 괜찮았는데 풍선을 터뜨릴 땐 큰 범위를 SetPixel 해주니 프레임드랍이 생겼다. 안그래도 거슬렸었는데 이참에 바꿔야겠다는 생각이 들었다. 원하는 구현 내용 개수나 크기, 모양이 동적으로 그려질 수 있어야함 해당 텍스쳐의 색상에 자주 접근해서 가져와야함 자주 호출돼도 괜찮은 성능. 그리는건 역시 GPU를 사용하는게 제일 나으니까 최대한 셰이더를 사용하고싶었는데 유니티 셰이더는 아직 잘 다루지 못해 내가 원하는 위치에 원하는 크기만큼 그리는 기능을 ..

    C# - Parse, TryParse, Convert의 차이점

    Parse 문자열 표현을 해당하는 형식으로 변환한다 특정 형으로 변환할 수 없는 경우 FormatException 발생 null 변환시 ArgumentNullException 발생 string numStr = "0.555"; string nullStr = null; Int32.Parse(numStr);// FormatException Int32.Parse(nullStr); // ArgumentNullException TryParse 문자열 표현을 해당하는 형식으로 변환한다, 성공여부를 반환한다 string numStr = "0.555"; string nullStr = null; int num = 0; Int32.TryParse(numStr, out num); // false (0) Int32.TryPar..

    최대공약수 알고리즘, 유클리드의 호제법 +최소공배수 구하기

    1. 유클리드 호제법이란 두 자연수의 최대공약수를 구하는 알고리즘 중 하나 유클리드의 저서 《기하학원본》에 기재되어 있는 최대공약수를 구하는 방법 호제법 또는 연제법 이라고 한다 사용되는 성질 a를 b로 나눈 나머지 = c 이면 a, b의 최대공약수는 b, c의 최대공약수와 같다 알고리즘 두 자연수 또는 다항식 a,b의 최대공약수를 구하는 데 있어, 자연수일 때는 a > b, 다항식일 때는 a의 차수가 b의 차수 이상이라 하고, 다음과 같이 나눗셈을 실행한다 b를 c로 나눈 나머지 = c' 를 구하고 c'를 d로 나눈 나머지 = ... 위 과정을 반복하여 나머지가 0이 되었을 때의 '나누는 수'가 a와 b의 최대공약수이다. 2. 예시 78696과 19332의 최대공약수 구하기 78696=19332×4+1..

    소수 구하기, 에라토스테네스의 체

    1. 가장 기본적인 방법 자연수 x가 소수인지 판별하기 위해서 생각할 수 있는 가장 간단한 방법 x를 2 ~ n-1까지의 모든 수로 나누어 보고, 나누어 떨어지는 수가 존재하는지 확인하는 것 O(n)의 시간복잡도를 가지고 있다 bool IsPrime(int num) { for(int i = 2; i < num; ++i) { if(num % i == 0) { return false; } } return true; } 2. 제곱근을 이용하는 방법 x를 2 ~ √x까지의 모든 수로 나누어 보고, 나누어 떨어지는 수가 존재하는지 확인하는 것 O(√n)의 시간복잡도를 가지고 있다 bool IsPrime(int num) { int sqrtNum = (int)Math.Sqrt(num); for (int i = 2; i

    File.WriteAllText, StreamWriter.Write

    File.WriteAlltext는 바로가기일 뿐, 내부적으론 StreamWriter를 사용한다 WriteAllText 적은 텍스트를 파일에 쓰는게 전부라면 WriteAllText를 사용하기 작성할 텍스트의 양이 많을경우 큰 임시 문자열을 생성하게 되므로 좋지 않다 StreamWriter 파일을 열고 닫는 것처럼 파일 작성 방법을 더 제어하고 싶다면 사용하기 참고 자료 https://social.msdn.microsoft.com/Forums/vstudio/en-US/d4aa0fb0-0a36-4884-9fe9-30cbd51639e0/using-filewritealltext-vrs-a-streamwriter?forum=vbgeneral using File.WriteAllText vrs a StreamWrite..

    File.ReadAllText와 StreamReader.ReadToEnd의 차이점

    https://stackoverflow.com/questions/3545402/any-difference-between-file-readalltext-and-using-a-streamreader-to-read-file Any difference between File.ReadAllText() and using a StreamReader to read file contents? At first I used a StreamReader to read text from a file: StreamReader reader = new StreamReader(dialog.OpenFile()); txtEditor.Text = reader.ReadToEnd(); but found out about File.ReadAllT..

    BinaryReader와 StreamReader 클래스의 차이

    Unity로 Save Load 시스템을 구현하다가 파일을 읽고 쓰는 클래스들에 대해 알아보게되면서 작성하게 되었다 사실 클래스명 그대로인데 BinaryReader 이진 데이터를 읽을 때 사용한다 StreamReader 텍스트 데이터를 읽을 때 사용한다 좀 더 얘기를 해보자면 컴퓨터 파일은 '바이너리 파일'과 '이진 파일'로 나뉜다 바이너리 파일 0과 1로 이루어진 데이터로 구성된 파일 (프로그램, 컴퓨터가 읽어서 사용하는 파일) .jpg, .png, .mp3, .exe, 워드, 한글 등이 바이너리 파일에 해당한다 사용자 또는 프로그램이 사용하던 정보나 숫자 값을 특별한 가공 없이 그대로 저장한다 데이터를 읽고 쓸때 파일 형식에 조건이 없기 때문에 대부분 데이터의 크기로 판단한다 따라서 '한 줄의 데이터를..

    [URP Custom Renderer Feature 만들기- Grayscale]

    구현 목표 특정 Shader만 제외하고 전체 화면에 Grayscale 효과 적용시키기 구현을 위해 필요했던 지식들 유니티 렌더 파이프라인의 변화 SRP 구조 Custom Renderer Feature 작성법 URP를 사용하면서 기존에 있던걸 사용할 수 없거나 교체된 부분들이 있어 여러 자료를 찾아봐야 했다 Custom Renderer Feature를 만들기 위해선 두 클래스를 사용하면 된다 ScriptableRenderPass ScriptableRendererFeature 기본적인 부분은 Unity Manual에 나와있다 Unity Manual: How to create a custom Renderer Feature 최종 결과물 using UnityEngine; using UnityEngine.Rende..