问题标签 [cg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3636 浏览

shader - 是否可以在顶点着色器中访问多边形中的所有顶点?

我正在尝试在 Unity 中创建线框顶点/片段着色器。根据这篇论文似乎是可能的。一般的想法似乎是您将在顶点着色器中计算的距离向量传递给片段着色器中的每个片段,它可以使用它来确定根据线框线在多边形内的位置绘制线框线的亮度。

但是,从我读过的所有其他内容来看,您似乎只能访问顶点着色器中的单个顶点。对于 ecah 顶点,我需要访问多边形中的所有相邻顶点。该论文似乎暗示不需要几何着色器,这很好,因为 Unity 还不支持它们。

我错过了什么?是否永远不可能访问顶点着色器中的相邻顶点?如果没有几何着色器,我想做的事情是不可能的吗?

0 投票
1 回答
172 浏览

glsl - 对于着色语言,哪一种是主流?

今天有几种着色语言可用,如 GLSL、HLSL、CG,选择哪一种来跟上潮流?

0 投票
2 回答
2152 浏览

c++ - 简单的 GPU 编程(使用 Cg?)

我渴望了解如何使用 GPU 的并行处理能力。但是,我并不急于制作图形!我尝试了 Cg 的教程,但它似乎很重的图形术语。此外,我似乎无法掌握如何将这样的程序连接到某些输入和输出。

让我们考虑以下非常简单的程序,它显然可以从并行性中受益(忽略缓慢的 HDD 速度):从 2 个文件中读取两个大整数数组,通过添加最后两个的元素创建一个新数组,并将其存储在另一个文件中. 我没有测试它,但这就是我在 C++ 中编码的方式:

你能详细说明我如何使用 Cg 来做这个吗?

0 投票
1 回答
351 浏览

directx - 运动模糊方向识别 DirectX

我将速度信息存储在纹理中。由于纹理只能具有 {0, 1} 范围内的颜色值,我应该如何确定速度的方向?一种解决方案是创建另一个纹理,该纹理仅存储速度的方向信息,但这将非常昂贵。有什么想法吗?

0 投票
1 回答
781 浏览

opengl - cg着色器参数

我正在尝试使用 cg (用于 ogre3d)编写着色器。我似乎无法解析我想用作自己代码起点的工作着色器。

这是着色器的声明:

我的问题:

iTexCoord0 显然是一个输入参数。为什么不宣布统一?

(oColor 显然是一个输出参数。毫无疑问)

covMap1 - splat6 是纹理。这些参数或其他东西是否加载到显卡内存中(如全局变量)?着色器程序的食人魔定义没有将它们列为参数。

splatScaleX 和 splatScaleZ 也是参数吗?着色器程序的食人魔定义也没有将这些作为参数列出。

从外部程序发送值时,声明的顺序有什么意义吗?

我想传入一个浮点数组(高度图)。我认为那将是

如果我不传递其中一个参数,着色器将不会被执行(并且我的对象将不可见,因为它没有纹理)?

有没有更好的方法来调试这些,而不是仅仅点击/错过和猜测?

0 投票
1 回答
1998 浏览

c++ - 使用 Cg 进行体积渲染:编译错误:语义“位置”在此配置文件中不可见

我现在正在编写代码以使用 OpenGL、Cg 和 C++ 实现直接光线投射体积渲染。我的计算机系统是 Win7,我的图形是 nVidia GTX570。

实际上,我已经成功实现了直接光线投射体积渲染的基本功能。但是现在我想在它上面添加照明,我使用局部照明模型。添加几行照明代码后,出现Cg编译器错误。添加之前,它运行良好。

我使用的 Cg 配置文件是CG_PROFILE_VP40CG_PROFILE_FP40

现在我发布我的 Cg 代码:

Cg错误的相关资料: 在此处输入图像描述

我发现如果我抹掉这条线

然后程序运行良好,当然我无法获得照明效果。所以我猜计算照明效果的函数着色有问题。

但我无法弄清楚。有人可以告诉我如何解决这个问题吗?

0 投票
1 回答
48 浏览

interpreter - Cg 中使用的动态编译和某些脚本中使用的解释器有什么区别?

在 Cg 教程中,它说 Cg 使用动态编译。我注意到它的编译器与解释器有一些相似之处,因为它们不需要在第一遍编译所有代码,如果存在错误,您会在运行 exe 时找到它。

但是,它们之间有什么区别。谁能给我一些细节?非常感谢。

0 投票
1 回答
1530 浏览

opengl - OpenGL中的多个渲染目标与Cg

我正在尝试(徒劳地)使用 OpenGL 和 NVIDIA 的 Cg 着色器系统设置 MRT,最终目标是延迟渲染。我已经成功地为单个目标工作了着色器和渲染到纹理,但是一旦我尝试将一个对象渲染到多个渲染目标,它就无法显示在其中任何一个目标中。

我正在通过以下方式设置帧缓冲区对象:

我的着色器(使用返回的配置文件编译cgGLGetLatestProfile)是:

有没有人知道为什么这可能会失败?

0 投票
1 回答
635 浏览

opengl - Cg problems with OpenGL

I'm working on an OpenGL project on Windows, using GLEW to provide the functionality the provided Windows headers lack. For shader support, I'm using NVIDIA's Cg. All the documentation and code samples I have read indicate that the following is the correct method for loading an using shaders, and I've implemented things this way in my code:

  1. Create a Cg context with cgCreateContext.
  2. Get the latest vertex and pixel shader profiles using cgGLGetLatestProfile with CG_GL_VERTEX and CG_GL_FRAGMENT, respectively. Use cgGLSetContextOptimalOptions to create the optimal setup for both profiles.
  3. Using these profiles and shaders you have written, create shader programs using cgCreateProgramFromFile.
  4. Load the shader programs using cgGLLoadProgram.

Then, each frame, for an object that uses a given shader:

  1. Bind the desired shader(s) (vertex and/or pixel) using cgGLBindProgram.
  2. Enable the profile(s) for the desired shader(s) using cgGLEnableProfile.
  3. Retrieve and set any needed uniform shader parameters using cgGetNamedParameter and the various parameter setting functions.
  4. Render your object normally
  5. Clean up the shader by calling cgGLDisableProfile

However, things start getting strange. When using a single shader everything works just fine, but the act of loading a second shader with cgGLLoadProgram seems to make objects using the first one cease to render. Switching the draw order seems to resolve the issue, but that's hardly a fix. This problem occurs on both my and my partner's laptops (fairly recent machines with Intel integrated chipsets).

I tested the same code on my desktop with a GeForce GTX 260, and everything worked fine. I would just write this off as my laptop GPU not getting along with Cg, but I've successfully built and run programs that use several Cg shaders simultaneously on my laptop using the OGRE graphics engine (unfortunately the assignment I'm currently working on is for a computer graphics class, so I can't just use OGRE).

In conclusion, I'm stumped. What is OGRE doing that my code is not? Am I using Cg improperly?

0 投票
3 回答
1665 浏览

xcode - XCode 3.2.6 无法识别 Cg 框架

我已将 Cg 安装到/Library/Frameworks/Cg.framework. 它在磁盘上看起来像这样:

在此处输入图像描述

我的 XCode 3.2.6 项目有Library/Frameworks一个框架搜索路径和-Framework Cg“其他链接器设置”,但是当我尝试#include <Cg/cg.h>它时找不到该文件。如果我直接添加/Library/Frameworks/Cg.framework/Headers到我的“标题搜索路径”中,我可以 `#include' 但它无法链接到错误“未找到框架 Cg”。

我真的不明白 Mac 框架什么——它有什么特别的还是只是一个普通的目录?似乎 Xcode出于某种原因根本不理解/Library/Frameworks/Cg.framework 是一个框架。

我不确定这是否相关:https ://stackoverflow.com/questions/5293940/xcode-3-2-6-stops-looking-in-library-frameworks

任何帮助了解问题所在将不胜感激。

我从命令行测试了一个简单的测试:

测试.cpp

只需运行“gcc -c test.cpp”即可成功(-c 表示不链接)。我还运行了“gcc -M test.cpp”(列出依赖项):/Library/Frameworks/Cg.framework/Headers/cg.h所以框架看起来很好......如何在不传递任何搜索路径的情况下运行 gcc,但是 XCode 在调用 gcc 时看不到框架?