【ng源码php教程】【janus源码】【红杉源码】fabric 源码解读

1.【真实感人物渲染】(四)布料篇
2.如何fabric安装
3.我的源码世界forge和fabric哪个好
4.手动搭建Fabric网络-详解链码安装、实例化过程
5.fabric-sdk-go的简单使用

fabric 源码解读

【真实感人物渲染】(四)布料篇

       在布料渲染领域,解读Charlie的源码高光公式常被用于实现较为出色的视觉效果,Unity HDRP管线的解读Fabric Shader是一种较为完整的实现方法。本文旨在基于HDRP管线,源码探讨棉布与丝绸材质的解读ng源码php教程实现。

       棉布材质特征为平纹或斜纹,源码这类材质几乎无镜面反射,解读粗糙度极高;相反,源码丝绸材质拥有显著的解读镜面反射能力,表面光滑,源码高光光泽明显,解读并且展现出各向异性特点。源码

       实现过程中,解读需准备BRDF LUT贴图。源码棉布材质使用特定的Fabric Charlie LUT贴图,而丝绸材质则采用Disney GGX LUT贴图。janus源码为了增加布料细节,还需要添加Thread贴图(螺纹贴图)和Fuzz贴图(绒毛贴图)。

       棉布渲染时,其直接光漫反射与光通量无关,仅与粗糙度相关。HDRP的高光项采用Charlie的法线分布与可见性项。Fabric Charlie LUT解码时需注意,直接光漫反射和镜面反射部分应除以π,与HDRP Fabric Shader源码中使用的版本保持一致。

       丝绸渲染则遵循PBR篇章中的迪士尼漫反射公式。高光部分使用Smith Joint的各向异性GGX高光的D项与V项。丝绸材质使用Disney GGX LUT,LUT解码方式与棉布有所不同。在渲染丝绸时,进行除以π的操作,以确保布料整体效果不会过亮。红杉源码各向异性渲染中,通常使用切线与副切线,若资产提供法线贴图,则需考虑法线贴图中的法线是否需要调整切线与副切线方向。HDRP的布料渲染流程中并未对切线与副切线进行调整,但有的博客提及了调整方法,无需使用三角函数,性能更为高效。各向异性间接光通过调整后的法线进行计算,调整anisotropy值以选择偏移强度,并结合anisDirection参数进行间接光照计算。解码LUT时,使用原始的NdotV。

       在Filament引擎中,可手动设置Sheen Color颜色,以调整布料的zzxy源码高光光泽颜色。该引擎文档提供了详细的解释和代码,关于布料次表面散射的特性在文档中亦有提及,但本文未进行实现。

       本系列文章旨在全面探索布料渲染技术,涵盖多种材质的实现与优化。在后续篇章中,将更深入地探讨不同技术细节与实际应用案例,旨在为读者提供全面且实用的布料渲染知识。如需进一步了解相关技术与实现细节,欢迎查阅本系列其他文章及官方文档资源。

如何fabric安装

       fabric支持pip、easy_install和源码安装的方式,是基于python(2.5及以上版本)的一种自动化运维工具。

       å·¥å…·/原料

       fabric

       linux

       pip安装

       1

       pip install fabric

       END

       easy_install安装

       1

        easy_install fabric

       END

       æºç å®‰è£…

       1

       é¦–先安装依赖包

       yum -y install python-setuptools python-devel

       2

       ä¸‹è½½fabric源码包并解压安装

       tar zxvf Fabric-1.8.2.tar.gz

       cd Fabric-1.8.2

       python setup.py install

       END

       æ³¨æ„äº‹é¡¹

       python一定要是2.5及以上版本

       ä¸ªäººæŽ¨èä½¿ç”¨æºç å®‰è£…

我的世界forge和fabric哪个好

       我的世界forge好。

       Forge API是最早的Mod Loader API,它采用ASM这个东西来反编译Minecraft的源代码,以修改游戏逻辑,而Fabric API差不多也是如此。

       Forge API采用了一个我忘了叫啥的wxpy源码玩意来反混淆Minecraft的源代码,而Fabric自己做了一套叫做yarn的玩意。

手动搭建Fabric网络-详解链码安装、实例化过程

       在HyperLedger的实践系列文章中,本文将深入探讨如何手动搭建Fabric网络,从链码的安装到实例化过程,一步步解析关键步骤。首先,我们通过安装Fabric环境和克隆最新代码,确保系统具备创建Fabric网络的基础。

       接下来,我们详细说明了网络搭建的几个关键步骤:

       1. 公私钥和证书生成

       在Fabric网络中,涉及两种类型的证书:用于节点间通讯安全的TLS证书,以及用于用户登录和权限控制的用户证书。由于测试环境不使用CA节点,我们选择使用cryptogen工具生成证书。

       1.1 编译cryptogen

       通过Fabric源代码的make命令,我们能够编译生成cryptogen工具。运行成功后,可在build/bin文件夹下找到编译出的cryptogen程序。

       1.2 配置crypto-config.yaml

       该配置文件指导了Fabric网络的拓扑结构,包括不同组织和Peer的关系。通过分析示例文件,我们理解了如何为特定组织配置公私钥和证书。

       1.3 生成公私钥和证书

       借助cryptogen工具,根据crypto-config.yaml配置文件,生成了必要的公私钥和证书。

       2. 创世区块与Channel配置

       创世区块与Channel配置区块是Fabric网络启动和通道创建的基石。

       2.1 编译生成configtxgen

       使用make命令,我们生成了用于生成配置区块和配置交易的configtxgen工具。

       2.2 配置configtx.yaml

       通过官方提供的模板文件,我们配置了Orderer和Peer的共识策略。配置完成后,通过configtxgen生成创世区块。

       2.3 生成创世区块与Channel配置区块

       生成的创世区块用于启动Ordering服务和配置网络策略;Channel配置区块用于新建应用通道,指定成员与访问策略。

       2.4 更新锚节点

       锚节点负责组织间通信,通过生成更新文件,确保网络中各节点能够正确通信。

       3. 配置Fabric环境的Docker

       利用Docker-compose文件,我们配置了环境,包括Orderer、Peer和CLI组件。

       3.1 配置Orderer

       在base/docker-compose-base.yaml中,我们为Orderer配置了路径映射、服务端口等信息。

       3.2 配置Peer

       Peer配置文件包含了服务地址、TLS信息、MSP信息等,确保Peer节点能够正确运行。

       3.3 配置CLI

       CLI作为客户端,配置了与Peer的连接信息以及脚本执行方式,用于执行SDK操作。

       4. 初始化Fabric环境与创建Channel

       通过执行docker-compose命令启动容器,我们完成了Fabric环境的初始化。然后,我们创建了Channel,并让各个Peer节点加入。

       4.1 启动Fabric容器

       在docker-compose-cli.yaml文件中配置好环境后,使用命令启动容器集群。

       4.2 创建Channel

       在CLI容器内,使用peer channel create命令创建Channel,并保存配置区块。

       4.3 Peer加入Channel

       通过修改CLI环境变量,指定连接的Peer节点,实现各节点加入Channel。

       4.4 更新锚节点

       完成Peer节点加入Channel后,更新锚节点配置以实现不同组织间的通信。

       5. 链码安装与运行

       最后,我们安装并运行链码,通过实例化过程将链码部署到Fabric网络中。具体操作包括安装链码、实例化链码以及执行交易。

       5.1 安装链码

       使用peer chaincode install命令,将链码安装到每个相关Peer节点上。

       5.2 实例化链码

       实例化过程生成包含链码实例的Docker镜像和容器,并通过与Orderer节点交互实现智能合约的激活。

       5.3 执行交易

       通过链码的调用执行转账操作,验证链码功能。

       5.4 查询交易

       在不同节点上查询交易,确保链码功能在全网内传播。

       总结

       通过以上步骤,我们不仅搭建了Fabric网络环境,还深入理解了链码安装与实例化的过程。理解这些关键步骤对于后续在生产环境中创建更复杂的网络和执行多样化链码提供了基础。在实施过程中遇到的任何问题,均可通过重新配置环境或深入理解Docker概念来解决。掌握Fabric网络的运行原理,对于进一步开发和优化区块链应用至关重要。

fabric-sdk-go的简单使用

        使用fabric提供的cryptogen工具生成文件模板

        $ cryptogen showtemplate > crypto-config.yaml

        进行修改,添加一个组织,一个orderer节点.

        根据crypto-config.yaml文件生成证书文件:

        $ cryptogen generate --config=crypto-config.yaml

        查看生成的证书文件夹结构:

        需要从fabric的源码案例中拷贝configtx.yaml文件

        $ cp $GOPATH/src/github.com/hyperledger/fabric-samples/first-network/configtx.yaml ./

        对configtx.yaml文件进行修改.

        修改之前,创建一个文件夹,来保存即将创建的创世区块文件

        将创建区块文件和通道的命令写到一个脚本中! generate.sh

        脚本文件和配置文件的目录结构:

        执行generate.sh文件生成创世区块文件和通道,其实只有一个组织,也没必要生成锚节点更新文件..

        $ ./generate.sh

        配置docker-compose文件:

        启动容器, 启动后查看容器运行情况

        $ docker-compose up -d

        $ docker-compose ps

        在这里,创建两个脚本文件,用于docker容器的管理

clear_docker.sh文件:

        restart.sh文件:

        创建配置文件的时候,有两个文件可以进行参考...

        修改后的sdk配置文件:

        创建出一个模型对象,给其赋值,并开始初始化sdk

        使用 pkg/fabsdk/fabsdk.go中的New()方法进行实例化

        创建请求之前,需要使用 gopackager.NewCCPackage 方法生成一个resource.CCPackage 对象,传递两个参数,一个是链码的路径(相对于工程的路径), 一个是GOPATH的路径.

        安装链码,使用pkg/client/resmgmt/resmgmt.go文件中的方法

        创建请求之前,需要生成一个*cb.SignaturePolicyEnvelope类型的对象,使用 third_party/github.com/hyperledger/fabric/common/cauthdsl/cauthdsl_builder.go文件中的方法即可,提供了好几个方法, 使用任意一个即可.这里使用 SignedByAnyMember方法: 需要传入所属组织ID

        实例化链码

        使用 pkg/client/channel/chclient.go中的 Execute()方法,来进行数据写入的操作:

        rsp, err := model.Channelclient.Execute(req)

        写入之前,要创建请求:

        tempArgs是要传给链码的参数,可以做下封装,就不受参数个数的限制了

        使用 pkg/client/channel/chclient.go中的 Query()方法,来进行数据查询的操作: 查询之前,同样需要创建请求.

        链码在工程中的路径应该是 工程名/chaincode文件夹

        比如:

        driverFabricDemo/chaincode

        而不应该省略掉工程名这样写: chaincode

        错误原因:cert.URIs 和 tpl.URIs 这两个字段没有被定义.

        进入tpl对象中, /usr/local/go/src/crypto/x/x.go 是个结构体,并没有发现 URIs 字段

        对go版本进行升级,从1.9.3升级到1..3, 再次进入 /usr/local/go/src/crypto/x/x.go 文件中,查看结构体内容:

        在执行sdk的Excute()方法时报错.

        方法不存在,一般是由于链码的Invoke方法中的方法名和Excute()方法传入的方法名不一样.

        但是可以肯定的是,链码的Invoke方法中的方法名和,项目中执行Excute()方法时传入的方法名是完全一样的! 但是很奇怪了,为什么会出现这个错误呢? 使用 docker rmi 删除掉 dev-peerx.travle.xq.com 的镜像,再重新运行即可.

        在创建实例化链码请求的时候

        总是提示

        Cannot use str (type *cb.SignaturePolicyEnvelope) as type *common.SignaturePolicyEnvelope less... (⌘F1) Inspection info: Reports composite literals with incompatible types and values

        明明是相同的类型,却总是报错,应该是IDE的问题.把vendor文件夹删除后,就不会有提示了. 再使用vendor对工程进行init 和 add +external 就好了!!

        出现这个错误,一般都是配置文件哪个地方写错了,需要细心检查

更多内容请点击【娱乐】专栏