'전체 글'에 해당되는 글 183건

  1. 2012.07.19 Pass
  2. 2012.07.19 unity fixed shader 로 짜는 shader 공부 4 - Blend Test 1
  3. 2012.07.18 Texture Matrix in Fixed Function

ShaderLab syntax: Pass

Pass 블록은 한 번에 그려지는 물체의 기하학을 야기합니다.

Syntax

Pass { [Name and Tags] [RenderSetup] [TextureSetup] }
기본 패스 명령은 사용하는 텍스쳐의 리스트에 의해 선택적으로 따르는 렌더 셋업 명령의 선택적인 리스트를 포함합니다.

Name and tags

패스는 그것의 NameTags의 임의적인 숫자를 정의합니다 – 렌더링 엔진에 패스의 의도를 전달하는 이름/값 스트링.

Render Setup

패스는 그래픽 하드웨어의 다양한 상태를 셋업합니다. 예를 들어 알파 블렌딩이 켜져야 하고 연기가 사용되야 하는 등등. 명령은 이것들과 같습니다:

Material { Material Block }
정점 조명 파이프라인에서 사용하는 재질을 정의합니다. 자세한 내용을 위해서 material page을 참고 합니다.
 
Lighting On | Off
정점 조명을 켜거나 끄는 것을 세팅합니다. 자세한 내용을 위해서 material page을 참고 합니다.
 
Cull Back | Front | Off
다각형 culling 모드를 세팅합니다.
 
ZTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)
깊이 테스팅 모드를 세팅합니다.
 
ZWrite On | Off
깊이 쓰기 모드를 세팅합니다.
 
Fog { Fog Block }
연기 파라미터를 세팅합니다.
 
AlphaTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always) CutoffValue
알파 테스팅을 합니다.
 
Blend SourceBlendMode DestBlendMode
알파 블렌딩 모드를 세팅합니다.
 
Color Color value
정점 조명이 꺼지지 위해서 사용하는 색상을 세팅합니다.
 
ColorMask RGB | A | 0 | any combination of R, G, B, A
색상 쓰기 마스크를 세팅합니다. ColorMask 0 쓰는 것은 모든 색상 채널로 렌더링하는 것을 끕니다.
 
Offset OffsetFactor , OffsetUnits
깊이 오프셋을 세팅합니다.
 
SeparateSpecular On | Off
정점 조명을 위한 별개의 반사적인 색상을 크거나 끕니다. 자세한 내용을 위해서 material page 살펴봅니다.
 
ColorMaterial AmbientAndDiffuse | Emission
정점 조명을 계산할 때 꼭지점 당 색상을 사용합니다. 자세한 내용을 위해서 material page 살펴봅니다.

Texture Setup

렌더 상태를 셋업한 후에 사용자는 SetTexture 명령을 사용하는 것을 적용하기 위해서 많은 텍스쳐를 지정할 수 있고 그들의 결합 모드도 지정할 수 있습니다:

SetTexture texture property { [Combine options] }

텍스쳐 셋업은 고정 함수 멀티텍스쳐링 파이프라인을 구성하고 사용자 정의 fragment shaders 사용되면 무시됩니다.

Details

Per-pixel Lighting

픽셀당 조명 파이프라인이 다수의 패스에서 물체를 렌더링하는 것에 의해 작동합니다. Unity는 주변의 그리고 정점 조명을 얻기 위해 물체를 한 번 렌더합니다. 그 후에 그것은 별개의 첨가적인 패스에서 물체에 영향을 주는 각 픽셀 조명을 렌더합니다. 자세한 내용을 위해서는 Render Pipeline 살펴보시기 바랍니다.

Per-vertex Lighting

꼭지점 당 조명은 각 꼭지점을 위해 계산되는 기본적인 Direct3D/OpenGL 조명 모델입니다. 조명은 켜집니다. 조명은 Material block, ColorMaterial 그리고 SeparateSpecular 명령에 의해 영향을 받습니다. 자세한 내용을 위해서는 material page 살펴보시기 바랍니다.

See Also

공통적인 기능 또는 다양항 고도의 효과를 구현하기 위한 몇 개의 특별한 패스가 가능합니다:

  • UsePass 또 다른 쉐이더로 부터 이름지어진 패스를 포함합니다.
  • GrabPass 다음의 패스에서의 사용을 위해서 텍스쳐로 스크린의 내용을 얻습니다.

'TA > Unity Shader 레퍼런스' 카테고리의 다른 글

SurfaceShaders  (0) 2012.07.26
한방에 모아보는 레퍼런스  (1) 2012.07.20
Category  (0) 2012.07.18
SubShader Tags  (0) 2012.07.18
GrabPass  (0) 2012.07.18
Posted by 프리랜서 디자이너

blend Test
 
Blend Off
블렌딩 기능 취소
Blend SrcFactor DstFactor
블렌딩을 구성 & 활성화. 생성된 색상은 SrcFactor를 곱합니다. 스크린에 이미 있던 색상은 DstFactor 에 의해 곱해지고 두 개는 함께 더해집니다

Properties

모든 다음의 속성들은SrcFactor와DstFactor 둘 다를 위해서 유효합니다. Source 는 계산되어지는 색상을 의미하고 Destination 는 이미 스크린에 있는 색상을 의미합니다.

One 1의 값 – 소스 또는 데스티네이션 색상이 온전히 오게 합니다.
Zero 0의 값 – 소스 또는데스티네이션 값을 삭제하게 합니다.
SrcColor 이 스테이지의 값은 소스 색상 값에 의해 곱해집니다.
SrcAlpha 이 스테이지의 값은 소스 알파 값에 의해 곱해집니다.
DstColor 이 스테이지의 값은 프레임 버퍼 소스 색상 값에 의해 곱해집니다.
DstAlpha 이 스테이지의 값은 프레임 버퍼 소스 알파 값에 의해 곱해집니다.
OneMinusSrcColor 이 스테이지의 값은 (1 – 소스 색상)에 의해 곱해집니다.
OneMinusSrcAlpha 이 스테이지의 값은 (1 – 소스 알파)에 의해 곱해집니다.
OneMinusDstColor 이 스테이지의 값은 (1 – 데스티네이션 색상)에 의해 곱해집니다.
OneMinusDstAlpha 이 스테이지의 값은 (1 – 데스티네이션 알파)에 의해 곱해집니다.

 

 

오늘은 블랜드모드가 어떻게 적용 되는지 기본적인 모드만 테스트 해 보자 .

 

Blend SrcAlpha OneMinusSrcAlpha     // Alpha blending

 

 

 

 


Blend One One                       // Additive

 

 

 

 


Blend One OneMinusDstColor          // Soft Additive

 

 

 

 


Blend DstColor Zero                 // Multiplicative

 

 

 

 


Blend DstColor SrcColor             // 2x Multiplicative

 

 

 

 

 

--전체 코드--

Shader "Dy/blendTest" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "Queue"="Transparent" }

pass{

// Blend SrcAlpha OneMinusSrcAlpha //AlphaBlend
// Blend One One//Additive
// Blend One OneMinusDstColor//Soft Additive
// Blend DstColor Zero//Multiplicative
Blend DstColor SrcColor//2X Multiplicative

Material{
Diffuse[_Color]
}

SetTexture[_MainTex] {
combine texture
}
}
//pass
}
//subshader
}
//shader

**보통 알파블랜드,스크린,멀티 이정도가 가장 많이 쓴이다... 다른걸 궂이 테스트 해볼 필욘 없는건가?**

**버텍스 알파는 어케 되는거지?**

-------------------------------------------------------------------------------------------

 

 

 

 

 

 

알파 블레드가 된 윈도우위에 반사cubemap을 표현

 

에헤~ 지난번  리플렉션에 큐브를 엏었어야 하는구나 에헹~ 그렇구낭

Shader "Dy/blendTest" {
 Properties {
  _Color ("Color",Color) = (1,1,1,1)
  _MainTex ("Base (RGB)", 2D) = "white" {}
  _Reflection ("Base(RGB)Gloss(A)",Cube) = "skybox"{TexGen CubeReflect}
  
 }
 SubShader {
  Tags { "Queue"="Transparent" }
  
  pass{
  
  Lighting On
  Blend SrcAlpha OneMinusSrcAlpha //AlphaBlend
  
   Material{
    Diffuse[_Color]
   }
   
   SetTexture[_MainTex] {
    combine texture * primary DOUBLE , texture *primary
   }
  }
  //pass
  
  pass{
  
  Lighting On
  Blend One One
  
   SetTexture[_Reflection]{
    combine texture
    Matrix[_Reflection]
   }
   
  }
  //pass
 }
 //subshader
}
//shader

 

하! matrix[] 나왔다... 리플렉션, 프로젝션 두군데서 봤는데.. 이거말고 뭐가 더있는지 안 나와있다...

두번째 페스의 라이트를 꺼도 결과는 같다....왜있는거야 ㅡㅡ;;


 

Posted by 프리랜서 디자이너
TA/Unity2012. 7. 18. 17:57
Shader "Projector/Projector Multiply"
{ 
Properties
{
    _Color ("Main Colour", Color) = (1,1,1,0)
    _ShadowTex ("Cookie", 2D) = "gray" { TexGen ObjectLinear }
}

Subshader
{
    Tags { "RenderType"="Transparent"  "Queue"="Transparent+100"}
    Pass
    {
        ZWrite Off
        Offset -1, -1

        Fog { Mode Off }

        //AlphaTest Greater .1
        AlphaTest Less 1
        ColorMask RGB
        Blend One SrcAlpha

        SetTexture [_ShadowTex]
        {
            constantColor [_Color]
            combine texture * constant, One - texture
            Matrix [_Projector]
        }
    }
}
}

We slightly modified it so that it can take a color and removed the falloff texture, but that's pretty much what you'll find in the Projectors package BlobShadow prefab shader.

alt text

Since I want way better control about the way this is all rendered, and since like every sane person I hate fixed-functions shader programming, I wanted to move it to CG code. My puny and failed attempt at simply reproducing what the fixed function shader was doing looks like this:

'TA > Unity' 카테고리의 다른 글

TD CameraControl C#  (0) 2013.05.09
유니티 C# 공부 모음  (0) 2013.05.07
HLSL 함수  (0) 2012.07.10
Blending modes..참고 자료  (0) 2012.06.08
기초적인 조명쉐이더  (0) 2012.06.08
Posted by 프리랜서 디자이너