'전체 글'에 해당하는 글 141건

R, G, B의 평균값(float)를 Albedo(또는 Emission)에 할당하면 됨.


RGB to YIQ 변환방식

GrayScale = 0.2989 * R + 0.5870 * G + 0.1140 * B



void surf (Input IN, inout SurfaceOutputStandard o) {

fixed4 c = tex2D (_MainTex, IN.uv_MainTex);

fixed4 d = tex2D (_MainTex2, IN.uv_MainTex2);

// float temp = (c.r + c.g + c.b)/3;

// float3 grey = float3 (temp, temp, temp);

// float3 grey = 0.2989 * c.r + 0.5870 * c.g + 0.1140 * c.b;

// float3 grey = (c.r + c.g + c.b)/3;


o.Albedo = grey;

o.Alpha = c.a;

}


WRITTEN BY
빨강꼬마

,











WRITTEN BY
빨강꼬마

,

프로젝트 작업중에 순차적으로 처리할 코드를 줄이다 보니 아래의 테스트코드를 작성하게 되었음.

왜 싱글턴을 사용했는지가 중요한게 아니므로 넘어가고 흐름만 보도록 하자.


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
IEnumerator Start()
{
yield return null;
bool checkSum = false;
for (int i = 0; i < 10; i++)
{
checkSum = false;
Test1.Instance.CallBackTest((success) => { checkSum = success; });
yield return new WaitUntil(()=>checkSum);
}
}
}
public class Test1 : MonoBehaviour
{
#region singleton
private static volatile Test1 instance;
private Test1() { }
public static Test1 Instance
{
get
{
if (instance == null)
{
GameObject go = new GameObject();
instance = go.AddComponent<Test1>();
}
return instance;
}
}
#endregion
Action<bool> mCB;
public void CallBackTest(Action<bool> _cb)
{
mCB = _cb;
StopCoroutine("StartCallBack");
StartCoroutine("StartCallBack");
}
IEnumerator StartCallBack()
{
yield return new WaitForSeconds(UnityEngine.Random.Range(0.5f, 3f));
if (mCB != null)
mCB.Invoke(true);
}
}

흐름은 Test 클래스 Start 함수에서 반복문으로 시작.

이후 지역변수 checkSum을 이용해 Test1쪽 콜백을 받으면 true로 변경되기 전까지 waituntil에서 대기하고,

checksum이 true로 되면 다음으로 진행되는 구조.


뭐 팁이랄것도 없이 아주 간단한 구조이긴한데, 눈으로 봐야 직성이 풀리는 성격이기도 하고 생존기록으로 남기고자..'ㅅ';


WRITTEN BY
빨강꼬마

,