在CG/HLSL中访问着色器属性(Properties)

在CG/HLSL中访问着色器属性

Shader在Properties块中访问材质属性。如果你想在一个着色程序中访问一些属性,你需要声明一个Cg/HLSL具有相同的名称和一个匹配的类型的变量。

Properties

例如这些材质属性:

_MyColor ("Some Color", Color) = (1,1,1,1)
_MyVector ("Some Vector", Vector) = (0,0,0,0)
_MyFloat ("My float", Float) = 0.5
_MyTexture ("Texture", 2D) = "white" {}
_MyCubemap ("Cubemap", CUBE) = "" {}
  • 2D:一张2的阶数大小的图
  • Rect:非2的阶数大小的图
  • Cube:立方体文理就是6张有联系的2D贴图的组合,主要用来做反射效果(比如天空盒和动态反射),也会被转换为对应的采样。
  • Range(min,max):最小值与最大值之间的浮点数
  • Float:任意浮点数。
  • Vector:四维向量
  • Color:以0~1定义rgba颜色,如(1,1,1,1)
  • 2D/Rect/Cube :对于贴图来说,默认值可以为一个代表默认颜色的字符串,可以是空字符串或则"white","black","gray"中的一个。
  • Float/Range:某个指定的浮点数
  • Vector:一个4维数,写为(x,y,z,w)

宣布在Cg / HLSL代码访问

fixed4 _MyColor;
float4 _MyVector;
float _MyFloat;
sampler2D _MyTexture;
samplerCUBE _MyCubemap;

Cg / HLSL也可以接受uniform关键字

uniform float4 _MyColor;

参数类型在ShaderLab中是这样映射到CG/HLSL中的:

Color和Vector属性映射到float4,half4或fixed4变量

Range和Float属性映射到float,half或者fixed变量

Texture属性映射到sampler2D 变量 给常规的2D纹理。Cubemaps映射到samplerCUBE。3D纹理映射到sampler3D。

时间: 2024-11-02 00:18:52

在CG/HLSL中访问着色器属性(Properties)的相关文章

在CG/HLSL中访问着色器的内容

着色器在Properties代码块中声明 材质球的各种特性.如果你想要在着色器程序中使用这些特性,你需要在CG/HLSL中声明一个变量,这个变量需要与你要使用的特性拥有同样的名字和对的上号的类型.比如以下这些类型: _MyColor ("Some Color", Color) = (1,1,1,1) _MyVector ("Some Vector", Vector) = (0,0,0,0) _MyFloat ("My float", Float)

OpenGL中使用着色器

OpenGL中使用GLSL着色器步骤 GLSL既适用于顶点着色器,也适用于片段着色器. 使用着色器对象的步骤: 1.创建着色器对象: GLuint glCreateShader(GLenum type); //创建一个着色器对象,type值必须是GL_VERTEX_SHADER或GL_FRAGMENT_SHADER.error返回0 2.把着色器的源码与着色器对象相关联: glShaderSource(GLuint shader, GLsizei count, const GLChar** st

HLSL 像色着色器ps_2_0运行没问题,ps_3_0运行有问题

最近开发中用到了像素着色器,我写了一个文本数据用 D3DXCompileShaderFromFile 对其进行编译,当我设置为 ps_2_0 时一切正常. 因程序需要编写更多的分支语句,而ps_2_0的指令数等受限,因此我想改为 ps_3_0 版本编译,编译正常[我对硬件进行了测试,它是支持 ps_3_0的]. 运行时发现:ps_2_0 图像显示正确:使用ps_3_0 时,图像显示错误,为一张同色的背景图. 解决该问题的方式: ps_3_0 needing a vertex shader .即p

Directx 中HLSL高级着色器语言 脑补一下吧

HLSL初级教程 作者:trcj 目录 前言 1.HLSL入门 1.1什么是着色器 1.2什么是HLSL 1.3怎么写HLSL着色器 1.4怎么用HLSL着色器 2.顶点着色器 2.1可编程数据流模型 2.2顶点声明 2.3用顶点着色器实现渐变动画 3.像素着色器 3.1多纹理化 3.2多纹理效果的像素着色器 3.3应用程序 4.HLSL Effect(效果框架) 4.1Effect代码结构 4.2用Effect实现多纹理化效果 结语 参考资料 前言 本教程针对HLSL(High Level S

WPF 像素着色器入门:使用 Shazzam Shader Editor 编写 HLSL 像素着色器代码

原文:WPF 像素着色器入门:使用 Shazzam Shader Editor 编写 HLSL 像素着色器代码 HLSL,High Level Shader Language,高级着色器语言,是 Direct3D 着色器模型所必须的语言.WPF 支持 Direct3D 9,也支持使用 HLSL 来编写着色器.你可以使用任何一款编辑器来编写 HLSL,但 Shazzam Shader Editor 则是专门为 WPF 实现像素着色器而设计的一款编辑器,使用它来编写像素着色器,可以省去像素着色器接入

php父类中访问子类的静态属性

在类中,我们可以通过self访问本类或父类中的静态属性/静态方法,可以通过parent访问父类中的静态属性/静态方法. 可我们却没有关键字从父类中的方法访问子类的静态属性,这是由于父类是先于子类创建的,所以从逻辑上来讲从父类中访问子类的静态属性并不是一个好的选择. 但有些时候我们不得不这样做,那么我们可以通过get_class()方法实现: get_class()返回的是本对象名, get_class(obj)返回的是对象obj的名, 看下面这个例子: <?php class A {    fu

BGFX 渲染引擎中着色器代码的调试方法

在实时渲染的图形开发中,着色器代码(Shader)越来越复杂,于是单纯的靠经验和不断试错的开发和调试方法早已不能满足实际需求.使用调试工具进行调试,成为开发中重要的方法.Bgfx 是一款跨平台.抽象封装了众多主流图形 API 的优秀渲染引擎.作为示例,本文在 Windows 平台上演示使用 Microsoft Visual Studio* 和 RenderDoc 对 Bgfx 中的 DX11 着色器代码进行调试.了解详情 原文地址:https://www.cnblogs.com/IDZPRC/p

OpenGL学习日记-2015.3.5——Hello glsl(着色器)

过年前忍不住买了本新版的OpenGL编程指南,主要的目的还是为了系统的学习着色器编程,另外就是接触新版的OpenGL技术和思想.看了几页,就过年了QAQ.回来后也是各种不在状态,不想上班,不想工作,不想写代码...昨天终于强迫自己继续看书,也找回了些状态. 书本基础知识的全面性和权威性就不用说了,不过这个源代码就....这第一个例子照着代码来抄结果...我想应该是原来的代码一个参数错了,折腾了半天,代码分析是详说.主要是分析代码,有什么说什么,并没有全面的说明着色器的基本内容,想着在着色器的基础

OpenGLES2.0着色器语言glsl

OpenGLES2.0中是强制使用可编程的渲染管线的,使用的是glsl着色器语言,因为着色器语言是使用的GPU,即图形处理单元,而不是CPU,这样可以使CPU从繁重的几何计算和像素的处理中解脱出来了.这就加大了处理的速度. 下面的这篇教程是转载的.原文地址如下,感谢作者manyou http://www.apkbus.com/blog-99192-39382.html 一.着色语言基础 数据类型概述 1. 标量 标量也被称为"无向量"其值只有大小,并不具有方向.标量之间的运算遵循简单的