⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hlsl.fx

📁 3d 游戏编程入门教程之例子源码-高光反射
💻 FX
字号:
// -------------------------------------------------------------
// Diffuse and specular shader using Phong specular
// 
// Copyright (c) 2003 Wolfgang F. Engel (wolf@direct3d.net)
// All rights reserved.
// -------------------------------------------------------------

// -------------------------------------------------------------
// variables that are provided by the application
// -------------------------------------------------------------
float4x4 matWorldViewProj;	
float4x4 matWorld;	
float4 vecLightDir;
float4 vecEye;

// -------------------------------------------------------------
// Output channels
// -------------------------------------------------------------
struct VS_OUTPUT
{
    float4 Pos  : POSITION;
    float3 Light : TEXCOORD0;
    float3 Norm : TEXCOORD1;
    float3 View : TEXCOORD2;
};

// -------------------------------------------------------------
// vertex shader function (input channels)
// -------------------------------------------------------------
VS_OUTPUT VS(float4 Pos : POSITION, float3 Normal : NORMAL)
{
    VS_OUTPUT Out = (VS_OUTPUT)0;      
    Out.Pos = mul(Pos, matWorldViewProj);				// transform Position
    Out.Light = vecLightDir;							// L
//    float3 PosWorld = normalize(mul(Pos, matWorld));	
    Out.View = vecEye; // - PosWorld;						// V
    Out.Norm = mul(Normal, matWorld);					// N
    
   return Out;
}

// -------------------------------------------------------------
// Pixel Shader (input channels):output channel
// -------------------------------------------------------------
float4 PS(float3 Light: TEXCOORD0, float3 Norm : TEXCOORD1, 
float3 View : TEXCOORD2) : COLOR
{
    float4 diffuse = { 1.0f, 0.0f, 0.0f, 1.0f};
    float4 ambient = { 0.1f, 0.0f, 0.0f, 1.0f};
    
    float3 Normal = normalize(Norm);
    float3 LightDir = normalize(Light);
    float3 ViewDir = normalize(View);    
    float4 diff = saturate(dot(Normal, LightDir)); // diffuse component
    
    // R = 2 * (N.L) * N 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -