首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏程序员叨叨叨

    3.4 CG VS GLSL VS HLSL

    其次 GLSL 的语法体系自成一家,而 HLSL 和 Cg 语言的语法基本相同,这就意味着,只要学习 HLSL 和 Cg 中的任何一种,就等同于学习了两种语言。 微软的 HLSL 移植性较差,在 windows 平台上可谓一家独大,可一出自己的院子(还好院子够大),就是落地凤凰不如鸡。这一点在很大程度上限制了 HLSL 的推广和发展。 目前 HLSL 多半都是用于游戏领域。我可以负责任的断言,在 Shader language 领域,HLSL 可以凭借微软的老本成为割据一方的诸侯,但,决不可能成为君临天下的霸主。 ”,所以,HLSL 和 Cg 其实是同一种语言(参 见 Cg 教程_可编程实时图形权威指南 29 页的致谢部分)。 并且在网上关于 Cg、GLSL、HLSL 的优劣讨论中,Cg 的跨平台性也受到过广泛的质疑。

    2.2K40发布于 2018-08-28
  • 来自专栏全栈程序员必看

    HLSL 与 GLSL 之间的映射关系参考

    他们的对应关系如下: HLSL GLSL SV_ClipDistance gl_ClipDistance SV_CullDistance 当存在ARB_cull_distance情况下gl_CullDistance 共享/本地内存 HLSL中的groupshared 内存就是GLSL中的shared 内存。仅此而已。 幸运的是, Vulkan使用和HLSL类似的语义,使得这部分可以有所不同。这个主要区别在于,HLSL中访问方法是“纹理对象”的一部分,而在GLSL,他们使用的是自由函数。 GLSL使用列优先右乘矩阵(也就是,你用的是 M * v),HLSL使用行优先左乘矩阵(v * M)然而你通常可以忽略这些-你可以重载这个命令,使之可以在左右两边都能进行乘法 –这将会改变矩阵m中m[0 在HLSL中,将返回第一行,而在GLSL中,则会返回第一列。,当你用“本来的”的命令初始化成员的时候,这同样也适用于构造函数。

    2.4K30编辑于 2022-09-14
  • 来自专栏逍遥剑客的游戏开发

    一个HLSL的常量数组问题

    查了一下HLSL的说明, 发现有个修饰词: static Mark a local variable so that it is initialized one time and persists between

    2.3K30发布于 2018-05-23
  • 来自专栏czwy的博客

    使用HLSL实现百叶窗动效

    先看下百叶窗动画实现效果: 准备工作与实现 编写和编译HLSL代码,创建ShaderEffect。由于HLSL有自己的语言语法,本文不做讨论。 这里使用一个已有的的HLSL文件,也是后边将介绍的一个HLSL编辑器工具Shazzam Shader Editor中的案例。 定义像素着色器,在UI元素中使用像素着色器,并通过动画设置百叶窗动画。 选中具体的着色器后,右侧区域上方显示着色其效果,下方选项卡分别显示HLSL代码编辑窗口、预览调节窗口、生成的C#代码和生成的VB代码。 HLSL代码编辑窗口 HLSL代码文件是以.fx作为后缀名。 预览调节窗口 在这里可以设置各种预览参数,预览HLSL代码的效果。 这里的XXX就是你定义的HLSL的名称。

    1.1K10编辑于 2023-10-22
  • 来自专栏LET

    UE(2):材质着色器

    代码片段中 最终完整的HLSL代码iniclude所有的UniformBuffer文件(ush),进入编译阶段 HLSL代码的编译是通过CompileShader方法(ShaderFormatD3D.cpp ),里面主要有两个函数: D3DCompileFunc:编译HLSL代码 D3DReflectFunc:获取着色器中Uniform变量对应的索引 上篇介绍了编译HLSL的流程,编译成功后,会执行ExtractParameterMapFromD3DShader HLSL Cross Compiler Pixar在1988年5月发布的RenderMan接口规范3.0版中向公众介绍了'Shader'[2]这词。 UE的shader是基于HLSL语法,但UE本身是跨平台的,因此,需要实现HLSL生成其他平台对应着色器的能力。 在HLSLcc中,使用了Mesa's IR解析HLSL的Abstract Syntax Tree(AST)并优化。

    2.5K40编辑于 2022-12-22
  • 来自专栏walterlv - 吕毅的博客

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

    HLSL,High Level Shader Language,高级着色器语言,是 Direct3D 着色器模型所必须的语言。WPF 支持 Direct3D 9,也支持使用 HLSL 来编写着色器。 旁边是 Tutorial 教程,这里的教程是配合 HLSL and Pixel Shaders for XAML Developers 这本书来食用的,所以如果希望能够系统地学习 HLSL,那么读一读这本书跟着学习里面的代码吧 左边的另一个标签是 Your Folder,可以放平时学习 HLSL 时的各种代码,也可以是你的项目代码,这里会过滤出 .fx 文件用于编写 HLSL 代码。 编写 HLSL 代码 HLSL 代码窗格 实际上本文不会教你编写任何 HLSL 代码,也不会进行任何语法入门之类的,我们只需要了解 Shazzam 是如何帮助我们为 WPF 程序编写像素着色器代码的。 按下 F5,即可立即编译你的 HLSL 代码,并在界面上方看到预览效果。别说你没有 HLSL 代码,前面我们可是打开了那么多个示例教程呀。

    1.9K20编辑于 2023-10-23
  • 来自专栏林德熙的博客

    C# 从零开始写 SharpDx 应用 画三角

    { using (var vertexShaderByteCode = ShaderBytecode.CompileFromFile("VertexShader.hlsl 来写,关于 hlsl 不属于本文的内容,所以没有详细告诉大家,建议复制一下代码。 { using (var vertexShaderByteCode = ShaderBytecode.CompileFromFile("VertexShader.hlsl 然后创建一个文本文件,注意文本的名字,一个是 PixelShader.hlsl 另一个是 VertexShader.hlsl ,需要点击新建项才可以创建文本。 为什么需要使用文本,因为这样编译选项就不需要自己选 现在就创建了两个文件,请看自己的工程是否存在下面两个文件 现在需要右击两个文件 PixelShader.hlsl 和 VertexShader.hlsl

    1.5K00编辑于 2022-08-12
  • 来自专栏逍遥剑客的游戏开发

    看得让人DT的GLSL

    shader和vbo结合的部分, 蒙了 vertex layout(或叫vertex declaration)要一个一个element的绑定到一个shader变量上(GL叫attribute), 也就是相当于HLSL     float3 position;       float3 normal;       float2 uv;   }   在DX中可以通过指定vetex declaration来绑定到指定寄存器, HLSL

    94520发布于 2018-05-23
  • 来自专栏逍遥剑客的游戏开发

    UE4 iOS Metal FrameBufferFetchMRT

    继续把HLSL和DXC的代码dump出来, 没有发现问题, [[vk::input_attachment_index(1)]]里面的index是1 ? ? ? 所以证明代码写得应该没有问题, 问题出在HLSL转换Metal Shader这一步. 可以看到生成的HLSL里已经有[[vk::input_attachment_index(0)]]了 ?

    2.1K20发布于 2020-12-01
  • 来自专栏壹种念头

    Unity通用渲染管线(URP)系列(二)——Draw Calls(Shaders and Batches)

    1.2 HLSL程序 我们用来编写着色器代码的语言是高级着色语言(High-Level Shading Language),简称HLSL。 所以必须用相同的名称编写HLSL函数来定义它们的实现。可以直接在pragma指令下面写,如果这样,就将把所有HLSL代码放在一个单独的文件中了。 (UnlitPass HLSL asset 文件) 1.3 include 保护 HLSL文件像C#类一样用于对代码进行分组,尽管HLSL并没有类的概念。除了代码块的局部范围外,只有一个全局范围。 首先在函数上方直接包含Common.hlsl。由于它存在于其他文件夹中,我们可以通过相对路径 ../ShaderLibrary/Common.hlsl进行访问。 在包含UnityInput.hlsl之前,请在我们的Common.hlsl文件中执行此操作。如果你对它们的内容感到好奇的话,也可以查看这些文件。 ?

    7.7K51发布于 2020-12-11
  • 来自专栏逍遥剑客的游戏开发

    Direct3D学习(四):高级着色语言初探

    顶点着色器是用来处理顶点的,像素着色器是用来处理像素的(好像是句废话) HLSL HLSL 全称High Level Shading Language . 从名字上可知,HLSL是一种高级语言(High Level),那么必然有与之对应的Low Level Shading Language,这个低级的语言就是ASM的Shader。 它是类似于汇编语言,难以编写和维护,而HLSL则跟我们熟悉的C/C++语言非常类似。大大降低了开发人员学习的成本。 HLSL本身就是微软和nVidia联合开发的,nVidia的版本称为Cg,也就是C for Graphics。可想而知,它和C是有同样的血统的。 要使用Effect框架,首先要写一个.fx文件,里面就是HLSL; //变换矩阵 float4x4 matWVP; //纹理

    1.1K70发布于 2018-05-23
  • 来自专栏TBOOX开源工程

    Xmake v2.8.3 发布,改进 Wasm 并支持 Xmake 源码调试

    cppfront") set_kind("binary") add_files("src/*.cpp2") add_packages("cppfront") 新增 utils.hlsl2spv 构建规则 早期我们已经提供了 utils.glsl2spv 规则去支持 glsl 的编译和使用,现在我们又新增了 utils.hlsl2spv 规则,实现对 hlsl 的编译支持。 glslang", {configs = {binaryonly = true}}) target("test") set_kind("binary") add_rules("utils.hlsl2spv ", {bin2c = true}) add_files("src/*.c") add_files("src/*.hlsl", "src/*.hlsl") add_packages 更新日志 新特性 #4122: 支持 Lua 调试 (EmmyLua) #4132: 支持 cppfront #4147: 添加 hlsl2spv 规则 添加 lib.lua.package 模块 #4226

    60130编辑于 2023-09-28
  • 来自专栏U3D技术分享

    《Unity Shader入门精要》笔记:基础篇(1)

    ---- 目录 渲染流水线 额外补充 Unity Shader基础 额外补充 渲染流水线 (本篇部分内容在HLSL的笔记中也有所提及) 什么是渲染流水线:传送门 CPU和GPU之间的通信:1、把数据加载到显存中 2、设置渲染状态 3、调用Draw Call GPU流水线:(这个部分在HLSL文章第一篇中有详尽的描述) 顶点数据-> (几何阶段)顶点着色器->曲面细分着色器->几何着色器->裁剪->屏幕映射-> HLSL、GLSL、CG:着色器语言。(HLSL教程就陈列在博主的博客中) Draw Call:CPU调用图像编程接口。 固定管线渲染:在较旧的GPU上实现的渲染流水线。 在Unity中,CG和HLSL语法从写法上基本一直。所以在Unity中CG基本等价HLSL

    1.5K20编辑于 2022-09-21
  • 来自专栏林德熙的博客

    dotnet 让 C# 可以通过动态生成 HLSL 使用 DX12 的 GPU 并行计算库 ComputeSharp 的简介

    在这个库里面将会动态生成 HLSL 代码,使用着色器的方式在 GPU 上跑起来 这个 ComputeSharp 库在 GitHub 完全开源,请看 https://github.com/Sergio0694 void Execute(ThreadIds ids) { buffer[ids.X] = ids.X; } } 这段代码将会被用来生成 HLSL

    2K40发布于 2020-10-23
  • 来自专栏walterlv - 吕毅的博客

    WPF 像素着色器进阶:使用 HLSL 编写一个高性能的实时变化的 HSLHSVHSB 调色盘

    本文将使用 HLSL 来完成这一任务。 HLSL 入门 如果你对 WPF 使用像素着色器还不太了解,那么可以阅读入门文章: WPF 像素着色器入门:使用 Shazzam Shader Editor 编写 HLSL 像素着色器代码 HSL/HSV 关于 HSL 和 HSV/HSB 的更多资料,可以参考 HSL and HSV - Wikipedia ▲ HSL ▲ HSV HSL 和 HSV/HSB 的 HLSL 代码 版本一:初步实现 由于 and HSV - Wikipedia 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/wpf-draw-a-hsl-hsb-palette-using-hlsl

    1K10编辑于 2023-10-23
  • 来自专栏Bairuo的文章

    UE4实现动态分支及相关材质节点编译原理

    不同材质节点的实现方式和难度都不太一样,简单的自定义节点可能只需要在Compile函数中定义自己要转换输出的HLSL代码,但DynamicIf不仅仅是输出一个[branch]字符串那么简单,它需要将之前生成的代码都移到自己的分支中 FShaderCodeChunk(Hash, *LocalVariableDefinition,SymbolName,Type,false); CodeChunk中的Definition即为其对应的HLSL )[CodeIndex].Trace = *LastTrace; 这样做是因为一旦ExpressionKey重复,那么后续的编译是不会继续的,需要使用上次的结果 问题2:如何生成DynamicIf HLSL UMaterialExpressionBeginDynamicIf>(ExpressionKey.Expression); if (ExistingCodeIndex && BeginDynamicIf == nullptr) 最终生成结果: 材质蓝图: HLSL : DXBC: 备注:如果if嵌套的话偶尔会报duplicate attribute branch的错误(反正可能也这么写的也少),取决于hlsl编译器,这点官方说明似乎也比较少,如果有了解的大佬欢迎说明了

    1.5K20编辑于 2022-11-18
  • 来自专栏walterlv - 吕毅的博客

    透明度叠加算法:如何计算半透明像素叠加到另一个像素上的实际可见像素值(附 WPF 和 HLSL 的实现)

    本文介绍透明度叠加算法(Alpha Blending Algorithm),并用 C#/WPF 的代码,以及像素着色器的代码 HLSL 来实现它。 例如使用 HLSL 编写像素着色器的一个实现。 下面使用像素着色器的实现是我曾经写过的一个特效的一个小部分,我把透明度叠加的部分单独摘取出来。 在像素着色器中实现 以下是 HLSL 代码的实现。

    5.3K20发布于 2020-02-10
  • 来自专栏程序员叨叨叨

    3.1 Shader Language 原理第 3 章 Shader Language

    第 3 章 Shader Language In the last year I have never had to write a single HLSL/GLSL shader. Shader language 目前主要有 3 种语言:基于 OpenGL 的 GLSL,基于 Direct3D 的 HLSL,还有 NVIDIA 公司的 Cg 语言。 Fragment Processor(可编程片断处理器,又称为片断着色器) 的作用进行阐述,然后在此基础上对 vertex program 和 fragment program 进行具 体论述,后对 GLSL、HLSL

    1.1K31发布于 2018-08-28
  • 来自专栏全栈程序员必看

    [ZZ] cbuffer和tbuffer

    原文转发: Shader Constants (DirectX HLSL) In shader model 4, shader constants are stored in one or more buffer This can be any HLSL type or effect object (except a texture or a sampler object). There are two ways to pack constants data: using the register (DirectX HLSL) and packoffset (DirectX HLSL) keywords. Direct3D 9, which did not perform packing and instead assigned each variable to a set of float4 registers, HLSL

    1K50发布于 2021-07-13
  • 来自专栏米扑专栏

    典型开源3D引擎分类比较

    Shaders ·   Supports vertex and fragment programs, both written in assembler, and in Cg, DirectX9 HLSL eye position etc ·   Pixel and Vertex Shaders 1.1 to 3.0 ·   ARB Fragment and Vertex Programs ·   HLSL ·   GLSL ·   Hardware Vertex Shaders ·   HLSL Scene Management General ·   Highly customizable, flexible

    7.7K30发布于 2019-02-19
领券