Purpose:
Create a Shader to Implement the Lambert's Cosine Law.
Solution:
1.Study of the Lambert's Cosine Law from <<Introduction to 3D Game Programming with DirectX 10>>
2.Shader Source
float4x4 wvp : WorldViewProjection <string UIWidget="None" ;>;
float4x4 w : World <string UIWidget="None";>;
float4 LightPosition : POSITION
<
string UIName="Light Position";
string Object="PointLight";
string Space="World";
int refID=0;
> =float4(100,100,100,0);
float4 LightColor: LIGHTCOLOR
<
int LightRef=0;
> =float4(1,1,1,0);
struct VS_INPUT
{
float4 Pos: POSITION;
float4 Normal: NORMAL;
};
struct VS_OUTPUT
{
float4 Pos : POSITION0;
float3 L: TEXCOORD0;
float3 N: TEXCOORD1;
};
VS_OUTPUT vs_main(VS_INPUT Input)
{
VS_OUTPUT Result;
Result.Pos = mul(Input.Pos,wvp);
float4 worldPos=mul(Input.Pos,w);
Result.L=LightPosition-worldPos;
Result.N=mul(Input.Normal,w);
return Result;
}
float4 ps_main(VS_OUTPUT Input):COLOR
{
float3 N=normalize(Input.N);
float3 L=normalize(Input.L);
float NdotL=max(dot(N,L),0);
float4 Result=NdotL*LightColor;
return float4(Result.xyz,1);
}
technique DiffuseLighting
{
pass Lambert
{
VertexShader = compile vs_2_0 vs_main();
PixelShader = compile ps_2_0 ps_main();
}
};
3.Load the shader and add a Omi(Point) light to the scene.
4.try move the light around to see the effect
- 大小: 83.6 KB
- 大小: 148.5 KB
- 大小: 124.7 KB
- 大小: 141 KB
- 大小: 143.7 KB
分享到:
相关推荐
标题 "HLSL-and-Pixel-Shaders-for-XAML-Developers_HLSL_" 指向的主题是关于在XAML开发中使用HLSL(High-Level Shader Language)和像素着色器的技术。HLSL是一种专门用于图形处理单元(GPU)编程的语言,尤其在...
《Real-Time_3D_Rendering_with_DirectX_and_HLSL》是一本专注于实时三维渲染技术的专著,尤其强调了DirectX和High-Level Shading Language(HLSL)的应用。这本书是为那些想要深入理解现代游戏开发、虚拟现实、可视...
在这个“D3D11教程五之DiffuseLight源码”中,我们将探讨如何在DirectX 11中实现漫射光照(Diffuse Lighting)效果。 首先,我们需要了解光照模型的基本概念。在3D图形学中,光照是创建真实感图像的关键因素之一。...
本教程针对HLSL(High Level Shading Language)初学者,从应用的角度对HLSL、顶点着色器、像素着色器和Effect效果框架进行了介绍,教程中去掉了对HLSL语法等一些细节内容的讨论,力求帮助读者尽可能快地理解HLSL...
【0积分下载】版本:1.1.302 原作者最近更新于2020/12/15
HLSL(High Level Shading Language)是一种高级的着色语言,主要用于DirectX平台。与早期Direct8.x中使用的低级着色汇编语言相比,HLSL具有更高的可读性和可维护性,它的语法类似于C语言,使得开发者更容易理解和...
- **HLSL(High-Level Shading Language)**:一种由微软开发的高级着色语言,主要用于编写运行在DirectX环境下的着色器程序。HLSL的设计目的是为图形程序员提供一个更接近传统编程语言的接口来处理GPU(图形处理器...
HLSL(High-Level Shading Language)是一种高级着色语言,它被设计用于DirectX API中的着色器编程。这种语言允许开发者以更直观的方式编写顶点着色器(Vertex Shader)和像素着色器(Pixel Shader),从而实现对3D图形...
HLSL (High-Level Shading Language) 是一种高级着色语言,由微软开发,主要应用于DirectX图形API中。HLSL提供了一种类似C语言的语法,使得开发者能够更容易地编写和调试着色器代码。 ##### 1.3 如何写HLSL着色器?...
HLSL的语法基于C/C++,包括控制流语句(if、for、while)、函数定义、结构体声明等。 8: 数学表达式和关键字 HLSL支持标准的数学运算符,如加减乘除、指数、取模等。同时,有关键字如return、break、continue等,...
在计算机图形学领域,HLSL(High-Level Shader Language)是一种强大的着色语言,由微软为DirectX设计,用于编写图形处理单元(GPU)上的着色器程序。在这个主题中,我们将深入探讨“HLSL Pixel Shader”以及如何...
3. **广泛的应用**:除了游戏开发之外,HLSL还被广泛应用于科学计算、计算机视觉等领域,特别是在GPGPU(通用计算图形处理器)技术的发展下,HLSL的应用范围得到了进一步扩展。 #### 三、Direct3D的演变历程 - **...
本主题将深入探讨如何使用High-Level Shading Language (HLSL) 在DirectX环境中实现每像素光照(Per-Pixel Lighting)和每顶点光照(Per-Vertex Lighting)。 HLSL是一种专门用于DirectX图形API的着色语言,它允许...
HLSL(High-Level Shading Language 高级着色语言)是一种高级着色语言,用于编写着色器(Shader)。它是DirectX Effect Framework的一部分,帮助开发者集成和管理shader到应用程序中。 一、HLSL基础知识 HLSL是一...
Direct3D HLSL(High-Level Shader Language)是微软开发的一种高级着色语言,用于在Direct3D图形应用程序中编写顶点着色器、像素着色器等图形处理代码。Phong光照模型是一种广泛应用于计算机图形学中的理想化光照...
自己备份用
3. **特性与函数映射**:hlsl2glsl处理 HLSL 特性(如`cbuffer`)和函数(如`tex2D`),将其转换为GLSL相应的特性(如`uniform`)和函数(如`texture2D`)。 4. **布局和语义处理**:GLSL和HLSL对顶点和片段着色器...