블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2737)
Unity3D (817)
Programming (474)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (228)
협업 (58)
3DS Max (3)
Game (12)
Utility (136)
Etc (96)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (53)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday
04-26 00:00

 

참조 : http://blueasa.tistory.com/1777

참조 : http://www.tasharen.com/forum/index.php?topic=10223.0

 

[파일]

Photoshop Overlay.zip
다운로드

 

 

이전에 포토샵의 Overlay와 비슷한 느낌의 Shader가 필요해서 찾아서 올려놨는데 NGUI 패널에서 클리핑이 안돼서

 

수정 및 추가해서 올려 놓음.

 

 

 

반응형
Posted by blueasa
, |

[파일]


$NShader.zip



위 파일 설치하면 됨..



[참조]

Ok. Here's small update:
http://www.jostavo.net/NShader.rar (it's a new fork for 2013 by SilentSouls that uses embedded coloring, the one Nims mentioned before)

I've added support of .shader.compute.cginc (sorry just handling not native support, see attach)

*optional* - in VisualStudio go Tools > Extensions and Updates find NShader and uninstall it, reboot studio (it need to be restarted to remove files)
Make sure Visual Studio is closed

Who afraid to download my file, install one from jostavo.net and then create and add .reg:
For future updates:
{af99cc5c-2a8a-3547-b255-896525bc39d1} - is UUID for current build only!

To find one You needed - open NShader.pkgdef and look for:
Or after install go
There will be yours.
 

Attached Files:




[출처] http://forum.unity3d.com/threads/tutorial-how-to-use-nshader-with-unity-shaders.108995/

반응형
Posted by blueasa
, |

Unity Shader 공부

Unity3D/Shader / 2014. 7. 16. 13:54

Link : Unity Shader 공부

반응형

'Unity3D > Shader' 카테고리의 다른 글

[NGUI] Unlit - Transparent Colored Additive  (4) 2015.01.27
Unity3d Shader Syntax Highlighting(Visual Studio 2010 또는 2012)  (0) 2014.07.21
Shader Code  (0) 2014.07.16
유니티 셰이더의 기초  (0) 2014.06.28
Unity Shader Reference  (0) 2014.06.24
Posted by blueasa
, |

링크 : http://usroom.tistory.com/

반응형

'Unity3D > Shader' 카테고리의 다른 글

Rendering Order - Queue tag  (0) 2014.06.24
UnityDiffuseLightmap.shader by jimfleming  (0) 2014.06.23
Toon/Tf2Shader  (0) 2013.07.19
Toon/Basic with Alpha  (0) 2013.07.19
Toon/Lighted with Alpha  (0) 2013.07.19
Posted by blueasa
, |

... 

string shaderName = "Mobile/Unlit (Supports Lightmap)";

GameObject sampleObject;

...

 

MeshRenderer mr = sampleObject.GetComponent<MeshRenderer>();   // 일단 MeshRenderer 컴포넌트를 얻고

mr.material.shader = Shader.Find(shaderName);                                 // 쉐이더를 찾아(이름으로) 변경

 

 

 

 

<출처> http://unity3d.com/support/documentation/ScriptReference/Material-shader.html



출처 : http://blog.naver.com/kzh8055/140158747595

반응형

'Unity3D > Shader' 카테고리의 다른 글

Toon/Tf2Shader  (0) 2013.07.19
Toon/Basic with Alpha  (0) 2013.07.19
Toon/Lighted with Alpha  (0) 2013.07.19
toon-water shader  (0) 2012.11.07
AlphaVertexColor  (0) 2012.11.04
Posted by blueasa
, |

쉐이더

Gamebryo/Shader / 2011. 4. 4. 06:41

쉐이더파일 - > HLSL
 - NSB : 바이너리,
 - NSF : 아스키
HLSL == NSF => NSB

NIF에 쉐이더 코드는 들어가지 않음.. 따로 관리 / 로딩해야함.. ㅡㅡa 약간 불편한 구조다..

DLL구조때문에 소스가 좀 이상타~~ 좀 더 쉽게 해주지.. 쩝... 폴더경로 읽으면 됨...
NiShaderFactory::RegisterErrorCallback(ShaderCallback_Errors);
NiShaderFactory::RegisterRunParserCallback(ShaderCallback_RunParser);
NiShaderFactory::RegisterClassCreationCallback(ShaderCallback_LibraryClassCreate);

맥스에서 쉐이더 이름을 설정해 줘야 한다...~~~
쉐이더 이름과 파일이름이 매칭되는듯 하다..

사용자 삽입 이미지
사용자 삽입 이미지

노드 이름 검색 : NiNode->GetObjectByName()
노드 연결 : NiNode->AttachChild


 출처 : 
http://hopkh.nayana.kr/tc/hopkh/246?category=20
반응형

'Gamebryo > Shader' 카테고리의 다른 글

알파 텍스쳐 블렌딩 공식  (0) 2011.07.22
[펌] Soft Particle (Depth bias blend)  (0) 2011.06.15
HDR  (0) 2011.04.04
겜브리오 쉐이더 제작시 주의사항  (0) 2011.04.04
Using Fx Shader In GameBryo  (0) 2011.03.17
Posted by blueasa
, |

HDR

Gamebryo/Shader / 2011. 4. 4. 06:15

여기에서는 HDR의 간략한 개념과 PostEffect를 구현하는 방법에 대해서 이야기합니다.

 

HDR의 구현에 대해서는 자세하게 적지 않습니다.

 

HDR

 

Hight Dinamic Range....

 

빛의 밝기를 R8G8B8A8로 표현하려고 하다보면.. 8비트 컬러값으로 부족하다.

 

밝기의 단계가..256단계라니... 쉣!

 

그래서 DX9로 넘어오면서 R16G16B16A16 이라는 엄청난 포맷을 내놓았다고...

 

이제는 16비트 컬러값으로 밝기를 표현할 수 있으니.. 실로 엄청난 발전이라 할 수 있겠다.

 

HDR은 위와 같은 발전된 파일 포맷을 이용하여, 빛을 좀 더 풍부하게.. 그리고 좀 더 현실적으로 표현하는 방법이라고 정의 하는것이 맞을 것 같다.

 

HDR의 구현은 간단하다.

 

화면 전체의 평균 밝기를 계산하고

 

밝은 부분은 따로 때내서( 이때, 평균 밝기를 사용 ).... 가우시안 블러를 먹인 후, 원본 이미지와 더해주면 된다.

 

( 역시, 말은 쉽다 ㅎㅎ )

 

In Gamebryo

 

알아야 하는 것들..

 

- Shader 사용 방법

- Mesh에 Shader 적용하는 방법

- NiScreenFillingRenderViewImpl 의 소개

- Shader의 변수 설정 : float, texture

- Render Target의 관리

 

Shader 사용 방법 

간단하다... NiSample을 사용한 Shader 등록은 정말 간단하다.

 

혹시, NiSample을 이용하지 않았다면.. ShaderLib 샘플에서 제시한 방법을 사용하도록 한다.

 

bool HDRSample::RegisterShaderParsers()
{
    m_kParserLibraries.Add(&NSFParserLib_RunShaderParser);
    return true;
}

bool HDRSample::RegisterShaderLibraries()
{
    m_kShaderLibraries.Add(&NiD3DXEffectShaderLib_LoadShaderLibrary);
    m_kShaderLibraries.Add(&NSBShaderLib_LoadShaderLibrary);
    return true;
}

 

Mesh에 Shader 적용하는 방법

Gamebryo 2.5에서는 Shader가 Material로 통합되어있다. 정확하게 몇 버전 부터 그래왔는 지는 잘 모르겠다.

 

다음은 우리가 .fx 파일에 정의해둔 Material을 받아오는 방법이다.

NiMaterial* pDownScale4x4Material = NiSingleShaderMaterial::Create("HDRRenderStep_DownScale4x4");

 

다음은 RenderObject( 일반적으로 NiMesh )에 Material을 적용하는 방법이다.

kRenderObject.ApplyAndSetActiveMaterial(pDownScale4x4Material);

 

NiScreenFillingRenderViewImpl

몇 일전에 Shader를 Post Effect를 적용하기 위해서...

 

2DRenderView를 만드들고 RenderView을 가득채울 수 있는 NiMeshScreenElements를 만든적이 있다.

 

아~!!!! 삽질이여...

 

NiScreenFillingRenderViewImpl 는 PostEffect에서 딱 사용하기 좋은

 

내가 위에서 했던 삽질을 한방에 해결해주는 RenderView이다.

 

Shader의 변수 설정 : float, texture

 

변수 설정

 

NiShaderFactory::UpdateGlobalShaderConstant( "gfBrightPassThreshold", sizeof(float), &f);

 

float, matrix, color, float array... 등을 넘기는 함수는 형태가 동일하다 ^^;

 

텍스쳐 설정

if (pkShaderMap0)
    {
        NiTexturingProperty::ShaderMap* pkPSVSShaderMap0 
            = NiNew NiTexturingProperty::ShaderMap(
            pkShaderMap0, 0, NiTexturingProperty::CLAMP_S_CLAMP_T,
            NiTexturingProperty::FILTER_NEAREST, 0);

        NIASSERT(pkPSVSShaderMap0);
        spPSVSQuadTex->SetShaderMap(0, pkPSVSShaderMap0);
    }

 

그냥 TexturingProperty에 SetShaderMap이라는 함수를 호출해 주기만 하면.. Shader로 Texture가 넘어가도록 되어있다.

 

SetShaderMap 함수의 첫 번째 인자가 Shader에 정의해둔 Shader Index와 일치해야한다.

 

다음은 HDRRenderStep.fx 의 내용중 일부이다.

texture Shader0Tex

    bool hidden = true;
    string NTM = "shader";
    int NTMIndex = 0;
>;

 

Render Target 관리

 

 Render Step의 Render Target 설정

 

m_spFrame->GetRenderStepByName(m_kMainRenderStepName)->
        SetOutputRenderTargetGroup(m_spHDREffect->GetInputRenderTargetGroup());

m_spHDREffect->SetOutputRenderTargetGroup(
        m_spRenderer->GetDefaultRenderTargetGroup());

 

// MainRenderStep의 출력을 HDREffect의 입력으로 넣어주고..

// HDREffectStep 의 출력은 DefaultRenderTargetGroup 로 맞춰준다.

 

GetInputRenderTargetGroup은 원래는 제공하지 않는 함수다..

멤버 변수로 화면 크기와 같은 Texture와 그의 RenderTargetGroup을 만들어 놓은 것이다.

 

 

 

 

각 HDR 단계도 위와 같이 RenderTarget을 공유하도록 한다.

 

타겟으로 사용될 하나의 Texture를 만들고, 여기서 RenderTarget을 만들어 내낸다.

 

m_spTex = NiRenderedTexture::Create(uiWidth, uiHeight, m_pkD3DRenderer, kPrefs );

spRenderTG = NiRenderTargetGroup::Create( kBuffer.m_spTex->GetBuffer(), m_pkD3DRenderer, true, true) );

 

m_spTex를 누군가의 입력으로 사용하는 방법은 간단하다...

 

spMesh 에 Base Texture 혹은 Shader Texture로 설정해주기만하면 된다. ( Shader 변수 설정을 보면 된다 )

 

샘플에서는 HDR 각 단계가 RenderClick을 상속 받아서 만들어졌다.

 

아직도 RenderClick으로 구분하는 것과... RenderView에 RenderObject를 차례대로 넣어주는 것의 차이를 정확하게는 이해할 수 없지만.. 뭔가 어렴풋하게는 좋은것 같다.

 

 

위에서 한 번 언급한적 있지만.. RenderTargetGroup은 DefaultRenderTargetGroup 이외에는 존재하지 않는다.

 

우리가 사용할 RenderTargetGroup을 만들어서 RenderStep과 RenderClick 사이에 입력과 출력으로 잘 끼워넣어야한다.


[출처]
 [Sample] HDR |작성자 프라이드

반응형

'Gamebryo > Shader' 카테고리의 다른 글

알파 텍스쳐 블렌딩 공식  (0) 2011.07.22
[펌] Soft Particle (Depth bias blend)  (0) 2011.06.15
쉐이더  (0) 2011.04.04
겜브리오 쉐이더 제작시 주의사항  (0) 2011.04.04
Using Fx Shader In GameBryo  (0) 2011.03.17
Posted by blueasa
, |
1. NSF 를 건드리면 반드시 NSB 를 삭제한 후 Asset Viewer나 MAX를 실행시켜, NSB가 생성되는지 확인할 것. 
생성이 안되면 엔진에서 NSF를 읽지 못한 것이다. 

2. NSF는 hlsl이 아니라 스크립트다. 때문에 띄어쓰기나 Tab에 매우 민감하다 (그런 것 같다) 
이 부분 때문에 수많은 삽질을 한 관계로, NSF를 제작시 Tab과 스페이스바에 주의하라. 

3. NSF를 건드리면 모든 뷰어를 종료하고 NSB가 생성되는지 확인해야 하지만, 
hlsl을 건드렸을때에는 맥스가 실행중이라고 해도 바로 확인할 수 있다. 

4. 반드시 한 줄을 추가하고 실행되는지 계속 점검하라. 
한 시간 동안 짜놓은 코드가 작동이 안될 때에는 찾을 방법이 없다. 

5.  텍스쳐 UV 에니메이션의 키 값을 받아오는 명령은 
CM_Defined     TexTransformBase     MatrixTexbase     4
이다. TexTransform의 계열에는 여러 종류가 있고, 커스텀 Attribute도 이런 식으로 넘길 수 있을 듯 하다. 

6. Constantmap 에서 순서는 다소 애매한 느낌이 있다. 

CM_Defined     WORLDVIEWPROJ     view_proj_matrix     0


에서 view_proj_matrix 는 레지스터를 나타낸다고 생각하면 좋다.그리고 레지스터를 자동으로 잡아준다고 생각하면 좋다. 
그리고 그 이후의 숫자는 Extra Data로, 기본적으로 0을 쓰면 된다. 
물론 텍스쳐와 같이 여러 장을 쓸 때는 인덱스 넘버로 사용해서, 0부터 1,2,3 순서로 쓰면 된다. 
그리고 같은 방식으로 이런 방식이 가능하다. 

CM_Defined     WORLDVIEWPROJ     0     0
 

이것은 이름으로 받지 않는 형식이라, 앞의 숫자는 인덱스 넘버를 위한 엑스트라 데이터가 아니라 레지스터가 된다. 즉 사용하는 레지스터만큼 넣어주면 된다. 
그 이후에 숫자가 더 들어갈 수 있는데, 이것은 초기값이다. 

CM_Defined     MaterialEmissive    0     0     0


즉 위와 같은 형식이 가능하다는 ..

CM_Difine 된 것은 저렇게 구분해서 사용하면 되고, User Custom Attribute 를 사용할 때에는 이후 숫자가 레지스터를 수동으로 표시해주는 넘버부터 나오게 된다 (고 한다) 


출처 :  
http://chulin28ho.egloos.com/5035307
반응형

'Gamebryo > Shader' 카테고리의 다른 글

알파 텍스쳐 블렌딩 공식  (0) 2011.07.22
[펌] Soft Particle (Depth bias blend)  (0) 2011.06.15
쉐이더  (0) 2011.04.04
HDR  (0) 2011.04.04
Using Fx Shader In GameBryo  (0) 2011.03.17
Posted by blueasa
, |