细分着色器

2024-05-04 17:58
文章标签 着色器 细分

本文主要是介绍细分着色器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

细分控制

  • 作用:
    • 对input patch进行修改,输出output patch到TES
    • 为TPG提供细分参数
  • TCS函数会为每一个output patch中的每一个顶点执行一次,同一个patch中对应的函数共享同一个gl_ in和gl_out

    #version 430
    layout(vertices = 4) out;   //output patch大小/*---------------------内置输入变量---------------------
    in int gl_PatchVerticesIn;  //input patch中顶点数量
    in int gl_PrimitiveID;      //当前patch的索引
    in int gl_InvocationID;     //当前patch中对应函数的索引
    in gl_PerVertex
    {vec4 gl_Position;float gl_PointSize;float gl_ClipDistance[];
    } gl_in [gl_MaxPatchVertices];
    -----------------------------------------------------*//*---------------------内置输出变量---------------------
    patch out float gl_TessLevelOuter[4];
    patch out float gl_TessLevelInner[2];
    out gl_PerVertex
    {vec4 gl_Position;float gl_PointSize;float gl_ClipDistance[];
    } gl_out[];
    -----------------------------------------------------*///自定义输入
    in vec2 uvInTCS[];//自定义输出
    patch out vec2 uvInTES[];void main()
    {...
    }
    

细分计算

  • 作用:接收从TCS传来的为细分面片顶点和从TPG传来的归一化细分坐标,生成细分后的顶点
  • TES函数为细分后的每一个顶点执行一次,同一个patch中对应的函数共享一个gl_in
  • TES只能输出线段或三角形

    #version 430
    layout(triangles,equal_spacing,ccw)
    /*---------------------内置输入变量---------------------
    in vec3 gl_TessCoord;
    in int gl_PatchVerticesIn;      //上一阶段output patch中的顶点数
    in int gl_PrimitiveID;          //对应patch的索引
    in gl_PerVertex
    {vec4 gl_Position;float gl_PointSize;float gl_ClipDistance[];
    } gl_in[gl_MaxPatchVertices];
    -----------------------------------------------------*//*---------------------内置输出变量---------------------
    out gl_PerVertex 
    {vec4 gl_Position;float gl_PointSize;float gl_ClipDistance[];
    };
    -----------------------------------------------------*///自定义输入
    patch in vec2 uvInTES[];//自定义输出
    out vec2 uvInGS;void main()
    {...
    }
    

细分流程

这里写图片描述

这篇关于细分着色器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/959778

相关文章

【Unity Shader】片段着色器(Fragment Shader)的概念及其使用方法

在Unity和图形编程中,片段着色器(Fragment Shader)是渲染管线中的一个阶段,负责计算屏幕上每个像素(片段)的颜色和特性。片段着色器通常在顶点着色器和任何几何处理之后运行,是决定最终像素颜色的关键步骤。 Fragment Shader的概念: 像素处理:片段着色器处理经过顶点着色器和几何着色器处理后,映射到屏幕空间的像素。颜色计算:它计算每个像素的颜色值,这可能包括纹理采样、光

【报告分享】细分车市洞察报告2021-易车研究院 (附下载)

摘要:近十多年,二十多岁的80后快速成为中国车市的消费主体,年轻化成多数车企核心战略,但目前没一个80后小于30岁,开始迈向40多岁,再加二十多岁的90后人口持续减少与加速涌入二手车市场,共同推高中国车市的平均消费年龄,2020年升至35岁,2021-2026年有望挑战40岁;三四十岁用户买车,与二十多岁有天壤之别,前者以换购、增购为主,推动中国车市由入门家用主导,向高端家用、个性车市转型。

UE4_材质_湿度着色器及Desaturation算法_ben材质教程

学习笔记,不喜勿喷!侵权立删,祝愿美好生活越来越好。 效果图: 原图: 1、使用初学者内容包的材质 我们这里使用虚幻自带的材质M_Brick_Clay_Old,复制一个更名为M_Brickclayoldwet材质。 2、添加去饱和度Desaturation节点 添加几个功能,让表面看起来是湿的,是什么能使表面看起来是湿的呢?东西的表面吸收水会使表面颜色变深,

第九章 Three.js 高级材质与着色器 (一)

材质和着色器在Three.js中扮演着至关重要的角色,它们决定了物体的外观和视觉效果。在本章中,我们将深入学习Three.js中的高级材质和自定义着色器,以创建复杂和精美的视觉效果。 9.1 基本材质回顾 在开始深入探讨高级材质之前,回顾一下Three.js提供的几种基本材质: MeshBasicMaterial: 不受光照影响的材质。MeshStandardMaterial: 基于物理的标

Vue--》打造细腻颗粒感 —— 细分组件颗粒图

写文背景:当涉及到前端开发时,我们经常会发现自己在不同的组件中复用相似的逻辑,在过去我们可能会通过混入、高阶组件或者全局组件等方式来实现代码的复用;或者一个组件逻辑太多,写出了超多的响应式ref数据和五花八门的函数,对于对接项目的人内心只想说:能别在堆屎了嘛 对于一个大型项目来说,即使是初始开发者后期也会发现,随着项目需求的迭代,一个组件都有可能会被提出n个修改需求,原型设计图变变变的,导

OpenGL ES _ 着色器_语法

OpenGL ES _ 入门_01OpenGL ES _ 入门_02OpenGL ES _ 入门_03OpenGL ES _ 入门_04OpenGL ES _ 入门_05OpenGL ES _ 入门练习_01OpenGL ES _ 入门练习_02OpenGL ES _ 入门练习_03OpenGL ES _ 入门练习_04OpenGL ES _ 入门练习_05OpenGL ES _ 入门练习_06

OpenGL ES _ 着色器_程序

OpenGL ES _ 入门_01OpenGL ES _ 入门_02OpenGL ES _ 入门_03OpenGL ES _ 入门_04OpenGL ES _ 入门_05OpenGL ES _ 入门练习_01OpenGL ES _ 入门练习_02OpenGL ES _ 入门练习_03OpenGL ES _ 入门练习_04OpenGL ES _ 入门练习_05OpenGL ES _ 入门练习_06

unity 定点着色器输入值

unity shader有3中类型,分别是固定着色器,顶点片段着色器和表面着色器, 固定着色器固定功能着色器为固定功能渲染管线的具体表现,功能较简单兼容比较老的机器基本都快被淘汰了。 表面着色器是对定点片源着色器的封装,封装了好多创建的光照模型,降低shader的书写门槛,但是不方便理解shader实现原理。 定点和片段着色器,顾名思义是由定点着色器和片段着色器组成的,灵活度比较高,但是需要有一定

从渲染管线到着色器Shader实践

浏览器渲染管线原理 浏览器渲染管线是浏览器将HTML、CSS和JavaScript转换为用户可见的网页的过程。这一过程涉及多个步骤,包括解析、布局、绘制和合成等。下面是浏览器渲染管线的详细原理: 解析(Parsing): HTML解析:浏览器下载HTML内容后,首先进行HTML解析,将HTML文本转换为DOM(文档对象模型)树。DOM树是一个以HTML标签为节点的树状结构,表示了文档的内容和

步进电机双闭环细分控制(matlab仿真)内含课设等参考文件

1.1   步进电机工作原理 步进电机是一种用电脉冲进行控制,将电脉冲信号转换成相位移的电机,其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比,每一个脉冲信号可使步进电机旋转一个固定的角度。脉冲的数量决定了旋转的总角度,脉冲的频率决定了电机运转的速度。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的